@social-mail/social-mail-client 1.2.84 → 1.2.86

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/admin/AdminAppIndex.pack.js +338 -161
  2. package/dist/admin/AdminAppIndex.pack.js.map +1 -1
  3. package/dist/admin/AdminAppIndex.pack.min.js +41 -41
  4. package/dist/admin/AdminAppIndex.pack.min.js.map +1 -1
  5. package/dist/public/channel/ChannelView.pack.js +118 -33
  6. package/dist/public/channel/ChannelView.pack.js.map +1 -1
  7. package/dist/public/channel/ChannelView.pack.min.js +2 -2
  8. package/dist/public/channel/ChannelView.pack.min.js.map +1 -1
  9. package/dist/services/email/EmailContentDownloader.d.ts +0 -2
  10. package/dist/services/email/EmailContentDownloader.d.ts.map +1 -1
  11. package/dist/services/email/EmailContentDownloader.js +2 -30
  12. package/dist/services/email/EmailContentDownloader.js.map +1 -1
  13. package/dist/tsconfig.tsbuildinfo +1 -1
  14. package/dist/web/AppIndex.pack.js +338 -161
  15. package/dist/web/AppIndex.pack.js.map +1 -1
  16. package/dist/web/AppIndex.pack.min.js +42 -42
  17. package/dist/web/AppIndex.pack.min.js.map +1 -1
  18. package/dist/web/page/mails/ConversationPage.d.ts +1 -0
  19. package/dist/web/page/mails/ConversationPage.d.ts.map +1 -1
  20. package/dist/web/page/mails/ConversationPage.js +16 -3
  21. package/dist/web/page/mails/ConversationPage.js.map +1 -1
  22. package/dist/web/page/mails/engagements/EngagementDetails.d.ts +10 -0
  23. package/dist/web/page/mails/engagements/EngagementDetails.d.ts.map +1 -0
  24. package/dist/web/page/mails/engagements/EngagementDetails.js +82 -0
  25. package/dist/web/page/mails/engagements/EngagementDetails.js.map +1 -0
  26. package/dist/web/page/mails/mini-compose/MiniComposeBox.d.ts +1 -0
  27. package/dist/web/page/mails/mini-compose/MiniComposeBox.d.ts.map +1 -1
  28. package/dist/web/page/mails/mini-compose/MiniComposeBox.js +17 -2
  29. package/dist/web/page/mails/mini-compose/MiniComposeBox.js.map +1 -1
  30. package/dist/web/page/mails/service/ConversationService.d.ts +1 -0
  31. package/dist/web/page/mails/service/ConversationService.d.ts.map +1 -1
  32. package/dist/web/page/mails/service/ConversationService.js +6 -2
  33. package/dist/web/page/mails/service/ConversationService.js.map +1 -1
  34. package/dist/web/page/mails/service/EngagementService.d.ts +18 -0
  35. package/dist/web/page/mails/service/EngagementService.d.ts.map +1 -0
  36. package/dist/web/page/mails/service/EngagementService.js +85 -0
  37. package/dist/web/page/mails/service/EngagementService.js.map +1 -0
  38. package/dist/web/page/mails/service/MailService.js +1 -1
  39. package/dist/web/page/mails/service/MailService.js.map +1 -1
  40. package/package.json +1 -1
  41. package/src/services/email/EmailContentDownloader.ts +0 -50
  42. package/src/web/page/mails/ConversationPage.tsx +15 -2
  43. package/src/web/page/mails/engagements/EngagementDetails.tsx +70 -0
  44. package/src/web/page/mails/mini-compose/MiniComposeBox.tsx +34 -15
  45. package/src/web/page/mails/service/ConversationService.tsx +5 -0
  46. package/src/web/page/mails/service/EngagementService.tsx +69 -0
  47. package/src/web/page/mails/service/MailService.ts +1 -1
@@ -0,0 +1,85 @@
1
+ System.register(["tslib", "@web-atoms/core/dist/di/Inject", "../../../../services/EntityService", "../../../../model/model", "../../../../common/cache/CacheTTL", "@web-atoms/date-time/dist/DateTime", "../../../../services/email/EmailContentDownloader", "@web-atoms/core/dist/di/DISingleton"], function (_export, _context) {
2
+ "use strict";
3
+
4
+ var __awaiter, __decorate, __metadata, Inject, EntityService, Email, EmailEngagement, CacheTTL, DateTime, EmailContentDownloader, DISingleton, cacheSeconds, EngagementService;
5
+ return {
6
+ setters: [function (_tslib) {
7
+ __awaiter = _tslib.__awaiter;
8
+ __decorate = _tslib.__decorate;
9
+ __metadata = _tslib.__metadata;
10
+ }, function (_webAtomsCoreDistDiInject) {
11
+ Inject = _webAtomsCoreDistDiInject.Inject;
12
+ }, function (_servicesEntityService) {
13
+ EntityService = _servicesEntityService.default;
14
+ }, function (_modelModel) {
15
+ Email = _modelModel.Email;
16
+ EmailEngagement = _modelModel.EmailEngagement;
17
+ }, function (_commonCacheCacheTTL) {
18
+ CacheTTL = _commonCacheCacheTTL.CacheTTL;
19
+ }, function (_webAtomsDateTimeDistDateTime) {
20
+ DateTime = _webAtomsDateTimeDistDateTime.default;
21
+ }, function (_servicesEmailEmailContentDownloader) {
22
+ EmailContentDownloader = _servicesEmailEmailContentDownloader.default;
23
+ }, function (_webAtomsCoreDistDiDISingleton) {
24
+ DISingleton = _webAtomsCoreDistDiDISingleton.default;
25
+ }],
26
+ execute: function () {
27
+ cacheSeconds = CacheTTL.seconds.oneMonth;
28
+ EngagementService = class EngagementService {
29
+ downloadEngagements(email) {
30
+ return __awaiter(this, void 0, void 0, function* () {
31
+ try {
32
+ const {
33
+ emailID
34
+ } = email;
35
+ let now = DateTime.now;
36
+ const minute = Math.floor(now.minute / 5);
37
+ now = now.addMinutes(-minute);
38
+ const cacheVersion = email.dateUpdated ? DateTime.from(email.dateUpdated).msSinceEpoch.toString(36) : "-";
39
+ email.engagements = yield this.entityService.query(EmailEngagement).where({
40
+ emailID
41
+ }, p => x => x.emailID === p.emailID).toArray({
42
+ cacheVersion,
43
+ cacheSeconds: 300
44
+ });
45
+ } catch (error) {
46
+ console.error(error);
47
+ }
48
+ });
49
+ }
50
+ list({
51
+ start = 0,
52
+ size = 50,
53
+ engagement = "",
54
+ emailID = 0,
55
+ mailboxID = 0,
56
+ emailAddressID = 0,
57
+ dateUpdated = null
58
+ }) {
59
+ return __awaiter(this, void 0, void 0, function* () {
60
+ const q = this.entityService.query(Email).where({
61
+ mailboxID,
62
+ emailAddressID,
63
+ engagement,
64
+ emailID
65
+ }, p => x => x.engagement === p.engagement && x.parentID === p.emailID);
66
+ const cacheVersion = dateUpdated ? DateTime.from(dateUpdated).msSinceEpoch.toString(36) : "-";
67
+ const list = yield q.toPagedList({
68
+ start,
69
+ size,
70
+ cacheVersion,
71
+ cacheSeconds
72
+ });
73
+ yield Promise.all(list.items.map(x => this.emailContentDownloder.download(x)));
74
+ return list;
75
+ });
76
+ }
77
+ };
78
+ __decorate([Inject, __metadata("design:type", EntityService)], EngagementService.prototype, "entityService", void 0);
79
+ __decorate([Inject, __metadata("design:type", EmailContentDownloader)], EngagementService.prototype, "emailContentDownloder", void 0);
80
+ EngagementService = __decorate([DISingleton()], EngagementService);
81
+ _export("default", EngagementService);
82
+ }
83
+ };
84
+ });
85
+ //# sourceMappingURL=EngagementService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Inject","_webAtomsCoreDistDiInject","_servicesEntityService","EntityService","default","_modelModel","Email","EmailEngagement","_commonCacheCacheTTL","CacheTTL","_webAtomsDateTimeDistDateTime","DateTime","_servicesEmailEmailContentDownloader","EmailContentDownloader","_webAtomsCoreDistDiDISingleton","DISingleton","execute","cacheSeconds","seconds","oneMonth","EngagementService","downloadEngagements","email","emailID","now","minute","Math","floor","addMinutes","cacheVersion","dateUpdated","from","msSinceEpoch","toString","engagements","entityService","query","where","p","x","toArray","error","console","list","start","size","engagement","mailboxID","emailAddressID","q","parentID","toPagedList","Promise","all","items","map","emailContentDownloder","download","__decorate","_export"],"sources":["../../../../../src/web/page/mails/service/EngagementService.tsx"],"sourcesContent":[null],"mappings":"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"}
@@ -88,7 +88,7 @@ System.register(["tslib", "@web-atoms/core/dist/di/DISingleton", "@web-atoms/cor
88
88
  if (!line.trim()) {
89
89
  continue;
90
90
  }
91
- email.subject || (email.subject = line.substring(0, 80));
91
+ email.subject || (email.subject = line.trim().substring(0, 80));
92
92
  break;
93
93
  }
94
94
  }
@@ -1 +1 @@
1
- {"version":3,"names":["DISingleton","_webAtomsCoreDistDiDISingleton","default","_webAtomsCoreDistDiInject","Inject","_servicesEntityService","EntityService","_modelModel","AppFile","Mailbox","MailboxContact","UserPushSubscription","_commonSql","Sql","_commonEventsCommonEvents","CommonEvents","execute","MailService","mailbox","mailboxID","mb","entityService","query","where","p","x","include","emailAddress","firstOrDefault","notify","emailAddressID","list","search","start","size","version","showBlocked","cancelToken","q","blocked","orderByDescending","dateUpdated","likeSearch","text","iLike","lastEmail","textBody","subject","name","senderName","toPagedList","raw","email","originalFileID","file","appFileID","rs","fetch","url","send","lines","split","line","trim","substring","iterator","recipients","emailAddressText","cloner","attachments","copy","save","onEmailScheduled","dispatchEvent","deleteAttachment","create","$deleted","onFileDeleted","__decorate","_export"],"sources":["../../../../../src/web/page/mails/service/MailService.ts"],"sourcesContent":[null],"mappings":"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"}
1
+ {"version":3,"names":["DISingleton","_webAtomsCoreDistDiDISingleton","default","_webAtomsCoreDistDiInject","Inject","_servicesEntityService","EntityService","_modelModel","AppFile","Mailbox","MailboxContact","UserPushSubscription","_commonSql","Sql","_commonEventsCommonEvents","CommonEvents","execute","MailService","mailbox","mailboxID","mb","entityService","query","where","p","x","include","emailAddress","firstOrDefault","notify","emailAddressID","list","search","start","size","version","showBlocked","cancelToken","q","blocked","orderByDescending","dateUpdated","likeSearch","text","iLike","lastEmail","textBody","subject","name","senderName","toPagedList","raw","email","originalFileID","file","appFileID","rs","fetch","url","send","lines","split","line","trim","substring","iterator","recipients","emailAddressText","cloner","attachments","copy","save","onEmailScheduled","dispatchEvent","deleteAttachment","create","$deleted","onFileDeleted","__decorate","_export"],"sources":["../../../../../src/web/page/mails/service/MailService.ts"],"sourcesContent":[null],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@social-mail/social-mail-client",
3
- "version": "1.2.84",
3
+ "version": "1.2.86",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -9,13 +9,8 @@ import DateTime from "@web-atoms/date-time/dist/DateTime";
9
9
  @DISingleton({})
10
10
  export default class EmailContentDownloader extends TaskManager {
11
11
 
12
- @Inject
13
- private entityService: EntityService;
14
-
15
12
  async download(email: IEmail) {
16
13
 
17
- await this.downloadEngagements(email);
18
-
19
14
  if (email.htmlBody) {
20
15
  return email.htmlBody;
21
16
  }
@@ -53,49 +48,4 @@ export default class EmailContentDownloader extends TaskManager {
53
48
  });
54
49
  }
55
50
 
56
- async downloadEngagements(email: IEmail) {
57
-
58
- const { emailID } = email;
59
-
60
- let now = DateTime.now;
61
- const minute = Math.floor(now.minute / 5);
62
- now = now.addMinutes(-minute);
63
-
64
- const cacheVersion = email.dateUpdated ? DateTime.from(email.dateUpdated).msSinceEpoch.toString(36) : "-";
65
-
66
- email.engagements = await this.entityService.query(EmailEngagement)
67
- .where({ emailID }, (p) => (x) => x.emailID === p.emailID)
68
- .toArray({
69
- cacheVersion,
70
- cacheSeconds: 300
71
- });
72
-
73
- // const cache = await window.caches.open("email-content-engagements");
74
- // const cacheKey = new URL(email.htmlBodyUrl, location.href);
75
- // const content = await cache.match(cacheKey);
76
-
77
- // if (content) {
78
- // email.engagements = await content.json();
79
- // return;
80
- // }
81
- // return await this.run(async () => {
82
-
83
- // for(let i = 0;i<3;i++) {
84
- // try {
85
- // const text = await this.entityService.query(EmailEngagement)
86
- // .where();
87
- // await cache.put(cacheKey, new Response(text, {
88
- // headers: {
89
- // "cache-control": "public, max-age=86000"
90
- // }
91
- // }));
92
- // return email.htmlBody = text;
93
- // } catch (error){
94
- // // eslint-disable-next-line no-console
95
- // console.error(error);
96
- // }
97
- // }
98
- // });
99
- }
100
-
101
51
  }
@@ -29,6 +29,7 @@ import { CommonEvents } from "../../../common/events/CommonEvents";
29
29
  import DateTime from "@web-atoms/date-time/dist/DateTime";
30
30
  import EmojiPicker from "../../../common/controls/emoji-picker/EmojiPicker";
31
31
  import EntityService from "../../../services/EntityService";
32
+ import EngagementDetails from "./engagements/EngagementDetails";
32
33
 
33
34
  const itemCss = styled.css `
34
35
  border: solid 1px lightgray;
@@ -179,7 +180,12 @@ export default class ConversationPage extends ContentPage {
179
180
  <div class="message" { ... renderMail(thread)} ></div>
180
181
  </LimitedText>
181
182
  { item.engagements?.length && <div class="engagements">
182
- { ... item.engagements.map((x) => <span text={`${x.engagement} ${x.count}`}/>)}
183
+ { ... item.engagements.map((x) =>
184
+ <span
185
+ data-click-event="view-engagements"
186
+ data-cursor="pointer"
187
+ title={`View all ${x.engagement} ${x.count}`}
188
+ text={`${x.engagement} ${x.count}`}/>)}
183
189
  </div>}
184
190
  { item.attachments?.length && <div class="attachments" data-layout="flex-wrap-padding">
185
191
  { ... item.attachments.map(FilePreview)}
@@ -191,7 +197,7 @@ export default class ConversationPage extends ContentPage {
191
197
 
192
198
  <i
193
199
  data-click-event="react-email"
194
- class="fad fa-face-smile-plus" title="React"/>
200
+ class="fa-light fa-face-smile-plus" title="React"/>
195
201
  <i
196
202
  data-click-event="reply-email"
197
203
  class="fas fa-reply" title="Reply"/>
@@ -471,6 +477,13 @@ export default class ConversationPage extends ContentPage {
471
477
  await this.conversationService.block(this.parameters);
472
478
  }
473
479
 
480
+ @Action({
481
+ onEvent: "view-engagements"
482
+ })
483
+ async viewEngagements(thread: IMailboxContactEmail) {
484
+ PageNavigator.pushPage(EngagementDetails, thread);
485
+ }
486
+
474
487
  @Action({
475
488
  onEvent: "delete-draft",
476
489
  confirm: "Are you sure you want to delete this draft?"
@@ -0,0 +1,70 @@
1
+ import { PopupWindowPage } from "@web-atoms/web-controls/dist/mobile-app/MobileApp";
2
+ import { IEmail, IMailboxContactEmail } from "../../../../model/model";
3
+ import XNode from "@web-atoms/core/dist/core/XNode";
4
+ import ToggleButtonBar from "@web-atoms/web-controls/dist/basic/ToggleButtonBar";
5
+ import AtomRepeater from "@web-atoms/web-controls/dist/basic/AtomRepeater";
6
+ import Bind from "@web-atoms/core/dist/core/Bind";
7
+ import InfiniteRepeater from "../../../../common/controls/repeater/InfiniteRepeater";
8
+ import InjectProperty from "@web-atoms/core/dist/core/InjectProperty";
9
+ import EngagementService from "../service/EngagementService";
10
+ import { DateFormats } from "../../../../common/date/DateFormats";
11
+
12
+ export default class EngagementDetails extends PopupWindowPage<IMailboxContactEmail> {
13
+
14
+ selectedEngagement = "";
15
+
16
+ emails: IEmail[] = [];
17
+
18
+ @InjectProperty
19
+ engagementService: EngagementService;
20
+
21
+ async init() {
22
+
23
+
24
+ const {
25
+ email: {
26
+ engagements,
27
+ emailID,
28
+ dateUpdated
29
+ },
30
+ emailAddressID,
31
+ mailboxID,
32
+ } = this.parameters;
33
+
34
+ this.title = "Responses";
35
+
36
+ this.selectedEngagement = engagements[0].engagement;
37
+
38
+ this.headerRenderer = () => <div>
39
+ <ToggleButtonBar
40
+ items={engagements}
41
+ labelPath={(x) => `${x.engagement} ${x.count}`}
42
+ valuePath={(x) => x.engagement}
43
+ value={Bind.twoWaysImmediate(() => this.selectedEngagement)}
44
+ />
45
+ </div>;
46
+
47
+ this.renderer = <div>
48
+ <AtomRepeater
49
+ data-layout="data-grid"
50
+ items={this.emails}
51
+ { ... InfiniteRepeater.pagedItems((start) =>
52
+ (c, e, cancelToken) => this.engagementService.list({
53
+ start,
54
+ engagement: this.selectedEngagement,
55
+ emailID,
56
+ emailAddressID,
57
+ mailboxID,
58
+ dateUpdated
59
+ })
60
+ )}
61
+ itemRenderer={(item: IEmail) => <div>
62
+ <div text={item.senderName}/>
63
+ <div text={item.engagement}/>
64
+ <div text={DateFormats.relative.short(item.dateReceived)}/>
65
+ </div>}
66
+ />
67
+ </div>;
68
+
69
+ }
70
+ }
@@ -84,6 +84,8 @@ export default class MiniComposeBox extends AtomControl {
84
84
 
85
85
  private editor: InlineHtmlEditor;
86
86
 
87
+ private prevSave: Promise<any>;
88
+
87
89
  constructor(app, e) {
88
90
  super(app, e);
89
91
  this.element.className = css;
@@ -109,20 +111,32 @@ export default class MiniComposeBox extends AtomControl {
109
111
 
110
112
  this.render(<div>
111
113
  <MailHtmlEditor
112
- toolbar={() => <div><Toolbar>
113
- <Insert/>
114
- <Separator/>
115
- <Bold/>
116
- <Italic/>
117
- <Underline/>
118
- <StrikeThrough/>
119
- <Align alignment="above"/>
120
- <Separator/>
121
- <AddLink/>
122
- <Unlink/>
123
- <Separator/>
124
- <ToggleEmoji/>
125
- </Toolbar></div>}
114
+ toolbar={() => <div>
115
+ <Toolbar>
116
+ <Insert/>
117
+ <Separator/>
118
+ <Bold/>
119
+ <Italic/>
120
+ <Underline/>
121
+ <StrikeThrough/>
122
+ <Align alignment="above"/>
123
+ <Separator/>
124
+ <AddLink/>
125
+ <Unlink/>
126
+ <Separator/>
127
+ <ToggleEmoji/>
128
+ </Toolbar>
129
+ <input
130
+ style-place-self="stretch"
131
+ style-margin-left="5px"
132
+ style-margin-right="5px"
133
+ style-padding-left="10px"
134
+ style-padding-right="5px"
135
+ style-outline="none"
136
+ style-border="none"
137
+ placeholder="Subject ... "
138
+ value={Bind.sourceTwoWays(this, (x) => x.source.draft.subject)}/>
139
+ </div>}
126
140
  data-element="editor"
127
141
  data-html-editor="email-editor"
128
142
  presenter={Bind.presenter((c) => this.editor = c )}
@@ -184,13 +198,17 @@ export default class MiniComposeBox extends AtomControl {
184
198
  if (!this.editor?.htmlTextContent) {
185
199
  return;
186
200
  }
201
+ if (this.prevSave) {
202
+ await this.prevSave;
203
+ }
187
204
  this.draft ??= Email.create({
188
205
  attachments: []
189
206
  });
190
207
  const { html , text } = this.editor.htmlTextContent;
191
208
  this.draft.htmlBody = html;
192
209
  this.draft.textBody = text;
193
- await this.save();
210
+ this.prevSave = this.save();
211
+ await this.prevSave;
194
212
  }
195
213
 
196
214
  @Action({ onEvent: CommonEvents.onEmailUnscheduled})
@@ -218,6 +236,7 @@ export default class MiniComposeBox extends AtomControl {
218
236
  this.draft.dateSent = DateTime.now.add(TimeSpan.fromSeconds(30));
219
237
  await this.mailService.send(this.draft);
220
238
  this.draft = Email.create({
239
+ subject: "",
221
240
  htmlBody: `<div contentEditable="true"><p></p><br/></div>`,
222
241
  attachments: []
223
242
  });
@@ -12,6 +12,7 @@ import DateTime from "@web-atoms/date-time/dist/DateTime";
12
12
  import { CommonEvents } from "../../../../common/events/CommonEvents";
13
13
  import BusyProgress from "../../../../services/BusyProgress";
14
14
  import EmailContentDownloader from "../../../../services/email/EmailContentDownloader";
15
+ import EngagementService from "./EngagementService";
15
16
 
16
17
  export const renderMail = AtomControl.registerProperty("data-html", "html", (c, e, value) => {
17
18
  if (!value) {
@@ -111,6 +112,9 @@ export default class ConversationService {
111
112
  @Inject
112
113
  private emailContentDownloader: EmailContentDownloader;
113
114
 
115
+ @Inject
116
+ private engagementService: EngagementService;
117
+
114
118
  public async getDraft({ mailboxID, emailAddressID, email }: IMailboxContactEmail) {
115
119
  const draft = "draft";
116
120
  return await this.entityService.query(MailboxContactEmail)
@@ -208,6 +212,7 @@ export default class ConversationService {
208
212
  email.textBody ??= "";
209
213
 
210
214
  tasks.push(this.downloadEmailContent(email));
215
+ tasks.push(this.engagementService.downloadEngagements(email));
211
216
  }
212
217
  await Promise.all(tasks);
213
218
  } finally {
@@ -0,0 +1,69 @@
1
+ import DITransient from "@web-atoms/core/dist/di/DITransient";
2
+ import { Inject } from "@web-atoms/core/dist/di/Inject";
3
+ import EntityService from "../../../../services/EntityService";
4
+ import { Email, EmailEngagement, IEmail, MailboxContactEmail } from "../../../../model/model";
5
+ import { CacheTTL } from "../../../../common/cache/CacheTTL";
6
+ import DateTime from "@web-atoms/date-time/dist/DateTime";
7
+ import EmailContentDownloader from "../../../../services/email/EmailContentDownloader";
8
+ import DISingleton from "@web-atoms/core/dist/di/DISingleton";
9
+
10
+ const cacheSeconds = CacheTTL.seconds.oneMonth;
11
+
12
+ @DISingleton()
13
+ export default class EngagementService {
14
+
15
+ @Inject
16
+ entityService: EntityService;
17
+
18
+ @Inject
19
+ emailContentDownloder: EmailContentDownloader;
20
+
21
+ async downloadEngagements(email: IEmail) {
22
+
23
+ try {
24
+ const { emailID } = email;
25
+
26
+ let now = DateTime.now;
27
+ const minute = Math.floor(now.minute / 5);
28
+ now = now.addMinutes(-minute);
29
+
30
+ const cacheVersion = email.dateUpdated ? DateTime.from(email.dateUpdated).msSinceEpoch.toString(36) : "-";
31
+
32
+ email.engagements = await this.entityService.query(EmailEngagement)
33
+ .where({ emailID }, (p) => (x) => x.emailID === p.emailID)
34
+ .toArray({
35
+ cacheVersion,
36
+ cacheSeconds: 300
37
+ });
38
+ } catch (error) {
39
+ console.error(error);
40
+ }
41
+ }
42
+
43
+ async list({
44
+ start = 0,
45
+ size = 50,
46
+ engagement = "",
47
+ emailID = 0,
48
+ mailboxID = 0,
49
+ emailAddressID = 0,
50
+ dateUpdated = null
51
+ }) {
52
+ const q = this.entityService.query(Email)
53
+ .where({ mailboxID, emailAddressID, engagement, emailID}, (p) =>
54
+ (x) => x.engagement === p.engagement
55
+ && x.parentID === p.emailID
56
+ );
57
+
58
+ const cacheVersion = dateUpdated ? DateTime.from(dateUpdated).msSinceEpoch.toString(36) : "-";
59
+
60
+ const list = await q.toPagedList(
61
+ { start, size, cacheVersion , cacheSeconds }
62
+ );
63
+
64
+ await Promise.all(list.items.map((x) => this.emailContentDownloder.download(x)));
65
+
66
+ return list;
67
+ }
68
+
69
+ }
@@ -64,7 +64,7 @@ export default class MailService {
64
64
  if (!line.trim()) {
65
65
  continue;
66
66
  }
67
- email.subject ||= line.substring(0, 80);
67
+ email.subject ||= line.trim().substring(0, 80);
68
68
  break;
69
69
  }
70
70
  }