@social-mail/social-mail-client 1.2.7 → 1.2.8

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 (39) hide show
  1. package/dist/admin/AdminAppIndex.pack.js +203 -45
  2. package/dist/admin/AdminAppIndex.pack.js.map +1 -1
  3. package/dist/admin/AdminAppIndex.pack.min.js +20 -4
  4. package/dist/admin/AdminAppIndex.pack.min.js.map +1 -1
  5. package/dist/common/controls/file-preview/FilePreview.d.ts.map +1 -1
  6. package/dist/common/controls/file-preview/FilePreview.js +1 -0
  7. package/dist/common/controls/file-preview/FilePreview.js.map +1 -1
  8. package/dist/common/events/CommonEvents.d.ts +2 -1
  9. package/dist/common/events/CommonEvents.d.ts.map +1 -1
  10. package/dist/common/events/CommonEvents.js +2 -1
  11. package/dist/common/events/CommonEvents.js.map +1 -1
  12. package/dist/tsconfig.tsbuildinfo +1 -1
  13. package/dist/web/AppIndex.pack.js +203 -45
  14. package/dist/web/AppIndex.pack.js.map +1 -1
  15. package/dist/web/AppIndex.pack.min.js +21 -5
  16. package/dist/web/AppIndex.pack.min.js.map +1 -1
  17. package/dist/web/page/mails/ConversationPage.js +3 -3
  18. package/dist/web/page/mails/ConversationPage.js.map +1 -1
  19. package/dist/web/page/mails/{MiniComposeBox.d.ts → mini-compose/MiniComposeBox.d.ts} +4 -2
  20. package/dist/web/page/mails/mini-compose/MiniComposeBox.d.ts.map +1 -0
  21. package/dist/web/page/mails/{MiniComposeBox.js → mini-compose/MiniComposeBox.js} +78 -17
  22. package/dist/web/page/mails/mini-compose/MiniComposeBox.js.map +1 -0
  23. package/dist/web/page/mails/mini-compose/SendFiles.d.ts +9 -0
  24. package/dist/web/page/mails/mini-compose/SendFiles.d.ts.map +1 -0
  25. package/dist/web/page/mails/mini-compose/SendFiles.js +78 -0
  26. package/dist/web/page/mails/mini-compose/SendFiles.js.map +1 -0
  27. package/dist/web/page/mails/service/MailService.d.ts +2 -1
  28. package/dist/web/page/mails/service/MailService.d.ts.map +1 -1
  29. package/dist/web/page/mails/service/MailService.js +16 -2
  30. package/dist/web/page/mails/service/MailService.js.map +1 -1
  31. package/package.json +1 -1
  32. package/src/common/controls/file-preview/FilePreview.tsx +1 -0
  33. package/src/common/events/CommonEvents.ts +4 -2
  34. package/src/web/page/mails/ConversationPage.tsx +1 -1
  35. package/src/web/page/mails/{MiniComposeBox.tsx → mini-compose/MiniComposeBox.tsx} +73 -17
  36. package/src/web/page/mails/mini-compose/SendFiles.tsx +63 -0
  37. package/src/web/page/mails/service/MailService.ts +11 -1
  38. package/dist/web/page/mails/MiniComposeBox.d.ts.map +0 -1
  39. package/dist/web/page/mails/MiniComposeBox.js.map +0 -1
@@ -1,25 +1,38 @@
1
1
  import XNode from "@web-atoms/core/dist/core/XNode";
2
2
  import styled from "@web-atoms/core/dist/style/styled";
3
3
  import { AtomControl } from "@web-atoms/core/dist/web/controls/AtomControl";
4
- import { AppFile, Email, EmailRecipient, IAppFile, IEmail, IMailbox, IMailboxContact, MailboxEmail } from "../../../model/model";
4
+ import { AppFile, Email, EmailRecipient, IAppFile, IEmail, IMailbox, IMailboxContact, MailboxEmail } from "../../../../model/model";
5
5
  import Bind from "@web-atoms/core/dist/core/Bind";
6
6
  import Action from "@web-atoms/core/dist/view-model/Action";
7
- import AudioRecorder from "../../../common/controls/audio/AudioRecorder";
7
+ import AudioRecorder from "../../../../common/controls/audio/AudioRecorder";
8
8
  import { Inject } from "@web-atoms/core/dist/di/Inject";
9
- import ConversationService from "./service/ConversationService";
10
- import { IUploadedFile } from "../../../services/files/LocalFileService";
9
+ import ConversationService from "../service/ConversationService";
10
+ import { IUploadedFile } from "../../../../services/files/LocalFileService";
11
11
  import AtomRepeater from "@web-atoms/web-controls/dist/basic/AtomRepeater";
12
12
  import InjectProperty from "@web-atoms/core/dist/core/InjectProperty";
13
13
  import { AtomBinder } from "@web-atoms/core/dist/core/AtomBinder";
14
- import { CommonEvents } from "../../../common/events/CommonEvents";
15
- import MailService from "./service/MailService";
14
+ import { CommonEvents } from "../../../../common/events/CommonEvents";
15
+ import MailService from "../service/MailService";
16
16
  import DateTime from "@web-atoms/date-time/dist/DateTime";
17
+ import SendFiles from "./SendFiles";
18
+ import sleep from "@web-atoms/core/dist/core/sleep";
17
19
 
18
20
  const css = styled.css `
19
21
  display: grid;
20
22
  grid-template-columns: auto 1fr auto;
21
23
  grid-template-rows: auto 1fr auto;
22
24
 
25
+ & > [data-element=add] {
26
+ grid-row: 1 / span 2;
27
+ grid-column: 1;
28
+ align-self: center;
29
+ font-size: larger;
30
+ padding: 10px;
31
+ background-color: white;
32
+ border-radius: 9999px;
33
+ cursor: pointer;
34
+ }
35
+
23
36
  & > [data-element=send] {
24
37
  grid-row: 2;
25
38
  grid-column: 3;
@@ -32,6 +45,10 @@ const css = styled.css `
32
45
  margin-left: 5px;
33
46
  margin-right: 5px;
34
47
  }
48
+ & > [data-element=files] {
49
+ grid-row: 3;
50
+ grid-column: 2;
51
+ }
35
52
  `.installLocal();
36
53
 
37
54
  export default class MiniComposeBox extends AtomControl {
@@ -56,9 +73,18 @@ export default class MiniComposeBox extends AtomControl {
56
73
 
57
74
  async init() {
58
75
 
76
+ await sleep(100);
77
+
59
78
  this.draft = await this.conversationService.getDraft(this.mailboxContact);
60
79
 
80
+ this.draft.attachments ??= [];
81
+
61
82
  this.render(<div>
83
+ <i
84
+ data-click-event="add-media"
85
+ data-element="add"
86
+ class="fa-solid fa-plus"
87
+ title="Attach media"/>
62
88
  <textarea
63
89
  data-element="editor"
64
90
  value={Bind.twoWaysImmediate(() => this.typedMessage)}/>
@@ -74,13 +100,41 @@ export default class MiniComposeBox extends AtomControl {
74
100
  data-click-event="send-email"
75
101
  />
76
102
  <AtomRepeater
103
+ data-element="files"
77
104
  items={Bind.oneWay(() => this.draft?.attachments)}
105
+ style-display={Bind.oneWay(() => this.draft && this.draft.attachments && this.draft.attachments.length > 0)}
78
106
  data-layout="flex-wrap-padding"
79
- itemRenderer={(item: IAppFile) => <div data-layout="row"><label text={item.name}/></div>}
107
+ itemRenderer={(item: IAppFile) => <div
108
+ data-layout="icon-button">
109
+ <label text={item.name}/>
110
+ <i
111
+ data-click-event="delete-attachment"
112
+ class="fas fa-times-circle"
113
+ data-cursor="pointer"
114
+ data-color="red"/>
115
+ </div>}
80
116
  />
81
117
  </div>);
82
118
  }
83
119
 
120
+ @Action({ onEvent: "add-media"})
121
+ async addMedia() {
122
+ const files = await SendFiles.showModal<IUploadedFile[]>({});
123
+ this.draft ??= Email.create({
124
+ attachments: []
125
+ });
126
+ this.addFiles(... files);
127
+ }
128
+
129
+ @Action({
130
+ onEvent: "delete-attachment",
131
+ confirm: "Are you sure you want to delete this attachment?"
132
+ })
133
+ async deleteAttachment(file: IAppFile) {
134
+ await this.mailService.deleteAttachment(file);
135
+ this.draft?.attachments.remove(file);
136
+ }
137
+
84
138
  @Action({ onEvent: CommonEvents.onDraftDeleted })
85
139
  async refreshDraft() {
86
140
  this.draft ??= Email.create({
@@ -119,20 +173,22 @@ export default class MiniComposeBox extends AtomControl {
119
173
  attachments: []
120
174
  });
121
175
  this.draft.mdBody = this.typedMessage;
122
- this.addFile(uploadedFile);
176
+ this.addFiles(uploadedFile);
123
177
  await this.save();
124
178
  }
125
179
 
126
- private addFile({ appFileID, url, file }: IUploadedFile) {
127
- this.draft.attachments ??= [];
180
+ private addFiles(... files: IUploadedFile[]) {
181
+ const attachments = this.draft.attachments ??= [];
128
182
  AtomBinder.refreshValue(this, "draft");
129
- this.draft.attachments.add(AppFile.create({
130
- appFileID,
131
- contentType: file.type,
132
- name: file.name,
133
- contentID: appFileID.toString(36),
134
- url
135
- }));
183
+ for (const { appFileID, url, file } of files) {
184
+ attachments.add(AppFile.create({
185
+ appFileID,
186
+ contentType: file.type,
187
+ name: file.name,
188
+ contentID: appFileID.toString(36),
189
+ url
190
+ }));
191
+ }
136
192
  }
137
193
 
138
194
  private async save() {
@@ -0,0 +1,63 @@
1
+ import XNode from "@web-atoms/core/dist/core/XNode";
2
+ import Action from "@web-atoms/core/dist/view-model/Action";
3
+ import { MenuItem } from "@web-atoms/web-controls/dist/basic/PopupButton";
4
+ import UploadEvent from "@web-atoms/web-controls/dist/basic/UploadEvent";
5
+ import BottomPopup from "@web-atoms/web-controls/dist/mobile-app/BottomPopup";
6
+ import { IMailboxContact } from "../../../../model/model";
7
+
8
+ export default class SendFiles extends BottomPopup {
9
+
10
+ async init() {
11
+ this.renderer = <div>
12
+ <div data-layout="vertical-flex-center-items">
13
+ <MenuItem
14
+ { ... UploadEvent.AttachUploadAction({
15
+ accept: "image/*",
16
+ multiple: true,
17
+ extra: {}
18
+ })}
19
+ data-click-event="send-photos"
20
+ icon="fas fa-image"
21
+ label="Send Photos"
22
+ />
23
+ <MenuItem
24
+ { ... UploadEvent.AttachUploadAction({
25
+ accept: "image/*",
26
+ capture: "user",
27
+ extra: {}
28
+ })}
29
+ data-click-event="take-photo"
30
+ icon="fa-duotone fa-video-plus"
31
+ label="Take Photo"
32
+ />
33
+ <MenuItem
34
+ { ... UploadEvent.AttachUploadAction({
35
+ accept: "video/*",
36
+ multiple: false,
37
+ extra: {}
38
+ })}
39
+ data-click-event="send-video"
40
+ icon="fas fa-video"
41
+ label="Send Video"
42
+ />
43
+ <MenuItem
44
+ { ... UploadEvent.AttachUploadAction({
45
+ accept: "video/*",
46
+ capture: "user",
47
+ extra: {}
48
+ })}
49
+ data-click-event="record-video"
50
+ icon="fa-duotone fa-video-plus"
51
+ label="Record Video"
52
+ />
53
+ </div>
54
+ </div>;
55
+ }
56
+
57
+ @Action({ onEvent: "filesAvailable"})
58
+ async filesAvailable({ files, extra }) {
59
+ this.close(files);
60
+ // send to compose...
61
+ }
62
+
63
+ }
@@ -1,8 +1,9 @@
1
1
  import DISingleton from "@web-atoms/core/dist/di/DISingleton";
2
2
  import { Inject } from "@web-atoms/core/dist/di/Inject";
3
3
  import EntityService from "../../../../services/EntityService";
4
- import { AppFile, Email, EmailAddress, IEmail, Mailbox, MailboxContact } from "../../../../model/model";
4
+ import { AppFile, Email, EmailAddress, IAppFile, IEmail, Mailbox, MailboxContact } from "../../../../model/model";
5
5
  import { Sql } from "../../../../common/Sql";
6
+ import { CommonEvents } from "../../../../common/events/CommonEvents";
6
7
 
7
8
  @DISingleton()
8
9
  export default class MailService {
@@ -59,4 +60,13 @@ export default class MailService {
59
60
  const cloner = this.entityService.cloner(email).include((x) => x.recipients).include((x) => x.attachments).copy;
60
61
  await this.entityService.save(cloner);
61
62
  }
63
+
64
+ async deleteAttachment(file: IAppFile) {
65
+ const { appFileID } = file;
66
+ await this.entityService.save(AppFile.create({
67
+ $deleted: true,
68
+ appFileID
69
+ }));
70
+ CommonEvents.onFileDeleted.dispatchEvent(file);
71
+ }
62
72
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"MiniComposeBox.d.ts","sourceRoot":"","sources":["../../../../src/web/page/mails/MiniComposeBox.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AAC5E,OAAO,EAA4C,MAAM,EAAY,eAAe,EAAgB,MAAM,sBAAsB,CAAC;AAiCjI,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,WAAW;IAE5C,cAAc,EAAE,eAAe,CAAQ;IAEvC,KAAK,EAAE,MAAM,CAAQ;IAErB,YAAY,EAAE,MAAM,CAAM;IAGjC,OAAO,CAAC,mBAAmB,CAAsB;IAGjD,OAAO,CAAC,WAAW,CAAc;gBAErB,GAAG,KAAA,EAAE,CAAC,KAAA;IAMZ,IAAI;IA4BJ,YAAY;IAOZ,SAAS;IAcT,SAAS;IAUT,gBAAgB;IAUtB,OAAO,CAAC,OAAO;YAYD,IAAI;CAIrB"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["MiniComposeBox","css","_export","setters","_tslib","XNode","_webAtomsCoreDistCoreXNode","default","_webAtomsCoreDistStyleStyled","styled","_webAtomsCoreDistWebControlsAtomControl","AtomControl","_modelModel","AppFile","Email","_webAtomsCoreDistCoreBind","Bind","_webAtomsCoreDistViewModelAction","Action","_commonControlsAudioAudioRecorder","AudioRecorder","_serviceConversationService","ConversationService","_webAtomsWebControlsDistBasicAtomRepeater","AtomRepeater","_webAtomsCoreDistCoreInjectProperty","InjectProperty","_webAtomsCoreDistCoreAtomBinder","AtomBinder","_commonEventsCommonEvents","CommonEvents","_serviceMailService","MailService","_webAtomsDateTimeDistDateTime","DateTime","execute","installLocal","constructor","app","e","mailboxContact","draft","typedMessage","element","className","runAsync","init","conversationService","getDraft","render","create","value","twoWaysImmediate","class","event-click","sendAudioMessage","oneWay","items","_a","attachments","itemRenderer","item","text","name","refreshDraft","onChanged","mdBody","save","sendEmail","status","dateSent","now","mailService","send","uploadedFile","show","addFile","appFileID","url","file","_b","refreshValue","add","contentType","type","contentID","toString","Object","assign","email","__decorate","onEvent","onDraftDeleted","defer","blockMultipleExecution"],"sources":["../../../../src/web/page/mails/MiniComposeBox.tsx"],"sourcesContent":[null],"mappings":"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"}