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

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 +205 -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 +205 -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} +80 -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} +75 -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,20 @@ 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
+ if (this.draft) {
81
+ this.draft.attachments ??= [];
82
+ }
83
+
61
84
  this.render(<div>
85
+ <i
86
+ data-click-event="add-media"
87
+ data-element="add"
88
+ class="fa-solid fa-plus"
89
+ title="Attach media"/>
62
90
  <textarea
63
91
  data-element="editor"
64
92
  value={Bind.twoWaysImmediate(() => this.typedMessage)}/>
@@ -74,13 +102,41 @@ export default class MiniComposeBox extends AtomControl {
74
102
  data-click-event="send-email"
75
103
  />
76
104
  <AtomRepeater
105
+ data-element="files"
77
106
  items={Bind.oneWay(() => this.draft?.attachments)}
107
+ style-display={Bind.oneWay(() => this.draft && this.draft.attachments && this.draft.attachments.length > 0)}
78
108
  data-layout="flex-wrap-padding"
79
- itemRenderer={(item: IAppFile) => <div data-layout="row"><label text={item.name}/></div>}
109
+ itemRenderer={(item: IAppFile) => <div
110
+ data-layout="icon-button">
111
+ <label text={item.name}/>
112
+ <i
113
+ data-click-event="delete-attachment"
114
+ class="fas fa-times-circle"
115
+ data-cursor="pointer"
116
+ data-color="red"/>
117
+ </div>}
80
118
  />
81
119
  </div>);
82
120
  }
83
121
 
122
+ @Action({ onEvent: "add-media"})
123
+ async addMedia() {
124
+ const files = await SendFiles.showModal<IUploadedFile[]>({});
125
+ this.draft ??= Email.create({
126
+ attachments: []
127
+ });
128
+ this.addFiles(... files);
129
+ }
130
+
131
+ @Action({
132
+ onEvent: "delete-attachment",
133
+ confirm: "Are you sure you want to delete this attachment?"
134
+ })
135
+ async deleteAttachment(file: IAppFile) {
136
+ await this.mailService.deleteAttachment(file);
137
+ this.draft?.attachments.remove(file);
138
+ }
139
+
84
140
  @Action({ onEvent: CommonEvents.onDraftDeleted })
85
141
  async refreshDraft() {
86
142
  this.draft ??= Email.create({
@@ -119,20 +175,22 @@ export default class MiniComposeBox extends AtomControl {
119
175
  attachments: []
120
176
  });
121
177
  this.draft.mdBody = this.typedMessage;
122
- this.addFile(uploadedFile);
178
+ this.addFiles(uploadedFile);
123
179
  await this.save();
124
180
  }
125
181
 
126
- private addFile({ appFileID, url, file }: IUploadedFile) {
127
- this.draft.attachments ??= [];
182
+ private addFiles(... files: IUploadedFile[]) {
183
+ const attachments = this.draft.attachments ??= [];
128
184
  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
- }));
185
+ for (const { appFileID, url, file } of files) {
186
+ attachments.add(AppFile.create({
187
+ appFileID,
188
+ contentType: file.type,
189
+ name: file.name,
190
+ contentID: appFileID.toString(36),
191
+ url
192
+ }));
193
+ }
136
194
  }
137
195
 
138
196
  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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"}