@social-mail/social-mail-client 1.2.72 → 1.2.74

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 (197) hide show
  1. package/dist/admin/AdminAppIndex.pack.js +159 -120
  2. package/dist/admin/AdminAppIndex.pack.js.map +1 -1
  3. package/dist/admin/AdminAppIndex.pack.min.js +15 -7
  4. package/dist/admin/AdminAppIndex.pack.min.js.map +1 -1
  5. package/dist/common/SocialMailApp.d.ts +1 -1
  6. package/dist/common/SocialMailApp.d.ts.map +1 -1
  7. package/dist/common/controls/menu/MenuItem.d.ts +4 -1
  8. package/dist/common/controls/menu/MenuItem.d.ts.map +1 -1
  9. package/dist/common/controls/menu/MenuItem.js +36 -6
  10. package/dist/common/controls/menu/MenuItem.js.map +1 -1
  11. package/dist/common/pages/mailboxes/services/MailboxService.d.ts +2 -0
  12. package/dist/common/pages/mailboxes/services/MailboxService.d.ts.map +1 -1
  13. package/dist/common/pages/mailboxes/services/MailboxService.js +73 -28
  14. package/dist/common/pages/mailboxes/services/MailboxService.js.map +1 -1
  15. package/dist/model/model.d.ts +12 -101
  16. package/dist/model/model.d.ts.map +1 -1
  17. package/dist/model/model.js +7 -80
  18. package/dist/model/model.js.map +1 -1
  19. package/dist/public/channel/ChannelView.pack.js +10 -82
  20. package/dist/public/channel/ChannelView.pack.js.map +1 -1
  21. package/dist/public/channel/ChannelView.pack.min.js +2 -2
  22. package/dist/public/channel/ChannelView.pack.min.js.map +1 -1
  23. package/dist/services/WebPushService.d.ts.map +1 -1
  24. package/dist/services/WebPushService.js +1 -21
  25. package/dist/services/WebPushService.js.map +1 -1
  26. package/dist/tsconfig.tsbuildinfo +1 -1
  27. package/dist/web/AppIndex.pack.js +160 -141
  28. package/dist/web/AppIndex.pack.js.map +1 -1
  29. package/dist/web/AppIndex.pack.min.js +15 -7
  30. package/dist/web/AppIndex.pack.min.js.map +1 -1
  31. package/dist/web/page/mails/MailboxContacts.d.ts +2 -0
  32. package/dist/web/page/mails/MailboxContacts.d.ts.map +1 -1
  33. package/dist/web/page/mails/MailboxContacts.js +32 -2
  34. package/dist/web/page/mails/MailboxContacts.js.map +1 -1
  35. package/dist/web/page/mails/service/MailService.d.ts.map +1 -1
  36. package/dist/web/page/mails/service/MailService.js +8 -2
  37. package/dist/web/page/mails/service/MailService.js.map +1 -1
  38. package/node_modules/@web-atoms/core/dist/App.js.map +1 -1
  39. package/node_modules/@web-atoms/core/dist/Atom.js.map +1 -1
  40. package/node_modules/@web-atoms/core/dist/MockApp.js.map +1 -1
  41. package/node_modules/@web-atoms/core/dist/Pack.js.map +1 -1
  42. package/node_modules/@web-atoms/core/dist/core/AtomBinder.js.map +1 -1
  43. package/node_modules/@web-atoms/core/dist/core/AtomComponent.js.map +1 -1
  44. package/node_modules/@web-atoms/core/dist/core/AtomDispatcher.js.map +1 -1
  45. package/node_modules/@web-atoms/core/dist/core/AtomDisposableList.js.map +1 -1
  46. package/node_modules/@web-atoms/core/dist/core/AtomEnumerator.js.map +1 -1
  47. package/node_modules/@web-atoms/core/dist/core/AtomList.js.map +1 -1
  48. package/node_modules/@web-atoms/core/dist/core/AtomLoader.js.map +1 -1
  49. package/node_modules/@web-atoms/core/dist/core/AtomMap.js.map +1 -1
  50. package/node_modules/@web-atoms/core/dist/core/AtomOnce.js.map +1 -1
  51. package/node_modules/@web-atoms/core/dist/core/AtomSelectableList.js.map +1 -1
  52. package/node_modules/@web-atoms/core/dist/core/AtomUri.js.map +1 -1
  53. package/node_modules/@web-atoms/core/dist/core/AtomWatcher.js.map +1 -1
  54. package/node_modules/@web-atoms/core/dist/core/Bind.js.map +1 -1
  55. package/node_modules/@web-atoms/core/dist/core/BindableProperty.js.map +1 -1
  56. package/node_modules/@web-atoms/core/dist/core/CancelTokenFactory.js.map +1 -1
  57. package/node_modules/@web-atoms/core/dist/core/Color.js.map +1 -1
  58. package/node_modules/@web-atoms/core/dist/core/Colors.js.map +1 -1
  59. package/node_modules/@web-atoms/core/dist/core/Command.js.map +1 -1
  60. package/node_modules/@web-atoms/core/dist/core/Defer.js.map +1 -1
  61. package/node_modules/@web-atoms/core/dist/core/EventScope.js.map +1 -1
  62. package/node_modules/@web-atoms/core/dist/core/ExpressionParser.js.map +1 -1
  63. package/node_modules/@web-atoms/core/dist/core/ExtendControl.js.map +1 -1
  64. package/node_modules/@web-atoms/core/dist/core/FormattedError.js.map +1 -1
  65. package/node_modules/@web-atoms/core/dist/core/FormattedString.js.map +1 -1
  66. package/node_modules/@web-atoms/core/dist/core/Hacks.js.map +1 -1
  67. package/node_modules/@web-atoms/core/dist/core/IFetchEvent.js.map +1 -1
  68. package/node_modules/@web-atoms/core/dist/core/IScreen.js.map +1 -1
  69. package/node_modules/@web-atoms/core/dist/core/IValueConverter.js.map +1 -1
  70. package/node_modules/@web-atoms/core/dist/core/InheritedProperty.js.map +1 -1
  71. package/node_modules/@web-atoms/core/dist/core/InjectProperty.js.map +1 -1
  72. package/node_modules/@web-atoms/core/dist/core/KeyValuePairs.js.map +1 -1
  73. package/node_modules/@web-atoms/core/dist/core/Markdown.js.map +1 -1
  74. package/node_modules/@web-atoms/core/dist/core/MarkdownError.js.map +1 -1
  75. package/node_modules/@web-atoms/core/dist/core/PropertyBinding.js.map +1 -1
  76. package/node_modules/@web-atoms/core/dist/core/PropertyMap.js.map +1 -1
  77. package/node_modules/@web-atoms/core/dist/core/Route.js.map +1 -1
  78. package/node_modules/@web-atoms/core/dist/core/SingleInvoker.js.map +1 -1
  79. package/node_modules/@web-atoms/core/dist/core/StringHelper.js.map +1 -1
  80. package/node_modules/@web-atoms/core/dist/core/TransientDisposable.js.map +1 -1
  81. package/node_modules/@web-atoms/core/dist/core/WatchProperty.js.map +1 -1
  82. package/node_modules/@web-atoms/core/dist/core/WebImage.js.map +1 -1
  83. package/node_modules/@web-atoms/core/dist/core/XNode.js.map +1 -1
  84. package/node_modules/@web-atoms/core/dist/core/sleep.js.map +1 -1
  85. package/node_modules/@web-atoms/core/dist/core/types.js.map +1 -1
  86. package/node_modules/@web-atoms/core/dist/di/DISingleton.js.map +1 -1
  87. package/node_modules/@web-atoms/core/dist/di/DITransient.js.map +1 -1
  88. package/node_modules/@web-atoms/core/dist/di/IMockOrInject.js.map +1 -1
  89. package/node_modules/@web-atoms/core/dist/di/IServiceProvider.js.map +1 -1
  90. package/node_modules/@web-atoms/core/dist/di/Inject.js.map +1 -1
  91. package/node_modules/@web-atoms/core/dist/di/Register.js.map +1 -1
  92. package/node_modules/@web-atoms/core/dist/di/RegisterScoped.js.map +1 -1
  93. package/node_modules/@web-atoms/core/dist/di/RegisterSingleton.js.map +1 -1
  94. package/node_modules/@web-atoms/core/dist/di/ServiceCollection.js.map +1 -1
  95. package/node_modules/@web-atoms/core/dist/di/ServiceProvider.js.map +1 -1
  96. package/node_modules/@web-atoms/core/dist/di/TypeKey.js.map +1 -1
  97. package/node_modules/@web-atoms/core/dist/services/BusyIndicatorService.js.map +1 -1
  98. package/node_modules/@web-atoms/core/dist/services/CacheService.js.map +1 -1
  99. package/node_modules/@web-atoms/core/dist/services/FetchBuilder.js.map +1 -1
  100. package/node_modules/@web-atoms/core/dist/services/JsonService.js.map +1 -1
  101. package/node_modules/@web-atoms/core/dist/services/MockNavigationService.js.map +1 -1
  102. package/node_modules/@web-atoms/core/dist/services/NavigationService.js.map +1 -1
  103. package/node_modules/@web-atoms/core/dist/services/ReferenceService.js.map +1 -1
  104. package/node_modules/@web-atoms/core/dist/services/http/AjaxOptions.js.map +1 -1
  105. package/node_modules/@web-atoms/core/dist/services/http/JsonError.js.map +1 -1
  106. package/node_modules/@web-atoms/core/dist/services/http/RestService.js.map +1 -1
  107. package/node_modules/@web-atoms/core/dist/style/StyleRule.js.map +1 -1
  108. package/node_modules/@web-atoms/core/dist/style/styled.js.map +1 -1
  109. package/node_modules/@web-atoms/core/dist/test.js.map +1 -1
  110. package/node_modules/@web-atoms/core/dist/tsconfig.tsbuildinfo +1 -1
  111. package/node_modules/@web-atoms/core/dist/unit/AtomTest.js.map +1 -1
  112. package/node_modules/@web-atoms/core/dist/unit/AtomWebTest.js.map +1 -1
  113. package/node_modules/@web-atoms/core/dist/view-model/Action.js.map +1 -1
  114. package/node_modules/@web-atoms/core/dist/view-model/AtomViewModel.js.map +1 -1
  115. package/node_modules/@web-atoms/core/dist/view-model/AtomWindowViewModel.js.map +1 -1
  116. package/node_modules/@web-atoms/core/dist/view-model/BindableUrlParameter.js.map +1 -1
  117. package/node_modules/@web-atoms/core/dist/view-model/Delay.js.map +1 -1
  118. package/node_modules/@web-atoms/core/dist/view-model/Disposable.js.map +1 -1
  119. package/node_modules/@web-atoms/core/dist/view-model/Load.js.map +1 -1
  120. package/node_modules/@web-atoms/core/dist/view-model/Once.js.map +1 -1
  121. package/node_modules/@web-atoms/core/dist/view-model/baseTypes.js.map +1 -1
  122. package/node_modules/@web-atoms/core/dist/view-model/bindPromise.js.map +1 -1
  123. package/node_modules/@web-atoms/core/dist/view-model/bindProperty.js.map +1 -1
  124. package/node_modules/@web-atoms/core/dist/view-model/bindUrlParameter.js.map +1 -1
  125. package/node_modules/@web-atoms/core/dist/web/WebApp.js.map +1 -1
  126. package/node_modules/@web-atoms/core/dist/web/controls/AtomAlertWindow.js.map +1 -1
  127. package/node_modules/@web-atoms/core/dist/web/controls/AtomComboBox.js.map +1 -1
  128. package/node_modules/@web-atoms/core/dist/web/controls/AtomContentControl.js.map +1 -1
  129. package/node_modules/@web-atoms/core/dist/web/controls/AtomControl.js +3 -2
  130. package/node_modules/@web-atoms/core/dist/web/controls/AtomControl.js.map +1 -1
  131. package/node_modules/@web-atoms/core/dist/web/controls/AtomFrame.js.map +1 -1
  132. package/node_modules/@web-atoms/core/dist/web/controls/AtomGridSplitter.js.map +1 -1
  133. package/node_modules/@web-atoms/core/dist/web/controls/AtomGridView.js.map +1 -1
  134. package/node_modules/@web-atoms/core/dist/web/controls/AtomItemsControl.js.map +1 -1
  135. package/node_modules/@web-atoms/core/dist/web/controls/AtomListBox.js.map +1 -1
  136. package/node_modules/@web-atoms/core/dist/web/controls/AtomNotification.js.map +1 -1
  137. package/node_modules/@web-atoms/core/dist/web/controls/AtomPage.js.map +1 -1
  138. package/node_modules/@web-atoms/core/dist/web/controls/AtomPageLink.js.map +1 -1
  139. package/node_modules/@web-atoms/core/dist/web/controls/AtomTabbedPage.js.map +1 -1
  140. package/node_modules/@web-atoms/core/dist/web/controls/AtomTemplate.js.map +1 -1
  141. package/node_modules/@web-atoms/core/dist/web/controls/AtomTemplateControl.js.map +1 -1
  142. package/node_modules/@web-atoms/core/dist/web/controls/AtomToggleButtonBar.js.map +1 -1
  143. package/node_modules/@web-atoms/core/dist/web/controls/AtomViewPager.js.map +1 -1
  144. package/node_modules/@web-atoms/core/dist/web/controls/AtomViewStack.js.map +1 -1
  145. package/node_modules/@web-atoms/core/dist/web/controls/AtomWindow.js.map +1 -1
  146. package/node_modules/@web-atoms/core/dist/web/core/AtomUI.js.map +1 -1
  147. package/node_modules/@web-atoms/core/dist/web/core/Encoder.js.map +1 -1
  148. package/node_modules/@web-atoms/core/dist/web/core/HtmlNode.js.map +1 -1
  149. package/node_modules/@web-atoms/core/dist/web/images/Busy.js.map +1 -1
  150. package/node_modules/@web-atoms/core/dist/web/images/BusyDataUrl.js.map +1 -1
  151. package/node_modules/@web-atoms/core/dist/web/images/Button.js.map +1 -1
  152. package/node_modules/@web-atoms/core/dist/web/images/ButtonDataUrl.js.map +1 -1
  153. package/node_modules/@web-atoms/core/dist/web/images/CloseButton.js.map +1 -1
  154. package/node_modules/@web-atoms/core/dist/web/images/CloseButtonDataUrl.js.map +1 -1
  155. package/node_modules/@web-atoms/core/dist/web/images/CloseButtonHover.js.map +1 -1
  156. package/node_modules/@web-atoms/core/dist/web/images/CloseButtonHoverDataUrl.js.map +1 -1
  157. package/node_modules/@web-atoms/core/dist/web/samples/MovieService.js.map +1 -1
  158. package/node_modules/@web-atoms/core/dist/web/samples/demo/app.js.map +1 -1
  159. package/node_modules/@web-atoms/core/dist/web/samples/demo/views/MovieList.js.map +1 -1
  160. package/node_modules/@web-atoms/core/dist/web/samples/demo/views/MovieListViewModel.js.map +1 -1
  161. package/node_modules/@web-atoms/core/dist/web/samples/tabs/app.js.map +1 -1
  162. package/node_modules/@web-atoms/core/dist/web/samples/tabs/views/List.js.map +1 -1
  163. package/node_modules/@web-atoms/core/dist/web/samples/tabs/views/ListDataUrl.js.map +1 -1
  164. package/node_modules/@web-atoms/core/dist/web/samples/tabs/views/Page1.js.map +1 -1
  165. package/node_modules/@web-atoms/core/dist/web/samples/tabs/views/TabHost.js.map +1 -1
  166. package/node_modules/@web-atoms/core/dist/web/samples/window/WindowSample.js.map +1 -1
  167. package/node_modules/@web-atoms/core/dist/web/services/MarkdownService.js.map +1 -1
  168. package/node_modules/@web-atoms/core/dist/web/services/NotificationPopup.js.map +1 -1
  169. package/node_modules/@web-atoms/core/dist/web/services/PopupService.js.map +1 -1
  170. package/node_modules/@web-atoms/core/dist/web/services/PopupWindow.js.map +1 -1
  171. package/node_modules/@web-atoms/core/dist/web/services/WebBusyIndicatorService.js.map +1 -1
  172. package/node_modules/@web-atoms/core/dist/web/services/WindowService.js.map +1 -1
  173. package/node_modules/@web-atoms/core/dist/web/styles/AtomAlertWindowStyle.js.map +1 -1
  174. package/node_modules/@web-atoms/core/dist/web/styles/AtomFrameStyle.js.map +1 -1
  175. package/node_modules/@web-atoms/core/dist/web/styles/AtomListBoxStyle.js.map +1 -1
  176. package/node_modules/@web-atoms/core/dist/web/styles/AtomNotificationStyle.js.map +1 -1
  177. package/node_modules/@web-atoms/core/dist/web/styles/AtomPageLinkStyle.js.map +1 -1
  178. package/node_modules/@web-atoms/core/dist/web/styles/AtomPopupStyle.js.map +1 -1
  179. package/node_modules/@web-atoms/core/dist/web/styles/AtomStyle.js.map +1 -1
  180. package/node_modules/@web-atoms/core/dist/web/styles/AtomStyleSheet.js.map +1 -1
  181. package/node_modules/@web-atoms/core/dist/web/styles/AtomTabbedPageStyle.js.map +1 -1
  182. package/node_modules/@web-atoms/core/dist/web/styles/AtomTheme.js.map +1 -1
  183. package/node_modules/@web-atoms/core/dist/web/styles/AtomToggleButtonBarStyle.js.map +1 -1
  184. package/node_modules/@web-atoms/core/dist/web/styles/AtomWindowStyle.js.map +1 -1
  185. package/node_modules/@web-atoms/core/dist/web/styles/CSS.js.map +1 -1
  186. package/node_modules/@web-atoms/core/dist/web/styles/IStyleDeclaration.js.map +1 -1
  187. package/node_modules/@web-atoms/core/dist/web/styles/StyleBuilder.js.map +1 -1
  188. package/node_modules/@web-atoms/core/package.json +1 -1
  189. package/node_modules/@web-atoms/core/src/web/controls/AtomControl.ts +3 -2
  190. package/package.json +2 -2
  191. package/src/common/SocialMailApp.ts +1 -1
  192. package/src/common/controls/menu/MenuItem.tsx +30 -0
  193. package/src/common/pages/mailboxes/services/MailboxService.ts +38 -3
  194. package/src/model/model.ts +15 -114
  195. package/src/services/WebPushService.ts +1 -22
  196. package/src/web/page/mails/MailboxContacts.tsx +23 -0
  197. package/src/web/page/mails/service/MailService.ts +7 -2
@@ -317,7 +317,7 @@ export interface IEmail extends IClrEntity {
317
317
  subscriberActivities?: ICollection<ISubscriberActivity>;
318
318
  }
319
319
 
320
- export const EmailStatusArray = [{"label":"queued","value":"queued"},{"label":"received","value":"received"},{"label":"draft","value":"draft"},{"label":"published","value":"published"},{"label":"pending-approval","value":"pending-approval"},{"label":"scheduled","value":"scheduled"},{"label":"sent","value":"sent"},{"label":"sent-failed","value":"sent-failed"}];
320
+ export const EmailStatusArray = [{"label":"queued","value":"queued"},{"label":"received","value":"received"},{"label":"draft","value":"draft"},{"label":"published","value":"published"},{"label":"pending-approval","value":"pending-approval"},{"label":"scheduled","value":"scheduled"},{"label":"sent","value":"sent"},{"label":"sent-failed","value":"sent-failed"},{"label":"deleted","value":"deleted"}];
321
321
 
322
322
  export const Email: IModel<IEmail> = new Model<IEmail>("Email", ["emailID"], { senderName: "",received: false,dateReceived: new DefaultFactory(() => new DateTime()),dateCreated: new DefaultFactory(() => new DateTime()),status: "queued",forwardCount: 0,replyCount: 0,viewCount: 0,originalFileSize: 0 });
323
323
 
@@ -420,6 +420,7 @@ export interface IMailbox extends IClrEntity {
420
420
  dateEngaged?: DateTime | null;
421
421
  username?: string;
422
422
  name?: string;
423
+ notify?: boolean;
423
424
  emailAddress?: IEmailAddress;
424
425
  domain?: IHostedDomain;
425
426
  logo?: IAppFile;
@@ -462,6 +463,7 @@ export interface IMailboxContact extends IClrEntity {
462
463
  blocked?: boolean;
463
464
  mute?: boolean;
464
465
  status?: "invited" | "added" | "active" | "unsubscribed" | "blocked";
466
+ notify?: boolean;
465
467
  emailAddressText?: string;
466
468
  name?: string;
467
469
  mailbox?: IMailbox;
@@ -600,11 +602,11 @@ export interface IUser extends IClrEntity {
600
602
  contacts?: ICollection<IContact>;
601
603
  domainUsers?: ICollection<IDomainUser>;
602
604
  pins?: ICollection<IUserPin>;
605
+ userPushSubscriptions?: ICollection<IUserPushSubscription>;
603
606
  roles?: ICollection<IUserRole>;
604
607
  userMailboxes?: ICollection<IUserMailbox>;
605
608
  authFactors?: ICollection<IUserAuthFactor>;
606
609
  publishedWebSiteVersions?: ICollection<IWebSiteFolderVersion>;
607
- licenses?: ICollection<IAppLicense>;
608
610
  }
609
611
 
610
612
  export const UserStatusArray = [{"label":"active","value":"active"},{"label":"blocked","value":"blocked"},{"label":"locked","value":"locked"},{"label":"change-password","value":"change-password"},{"label":"external","value":"external"}];
@@ -623,6 +625,17 @@ export interface IUserPin extends IClrEntity {
623
625
 
624
626
  export const UserPin: IModel<IUserPin> = new Model<IUserPin>("UserPin", ["pinID"], { });
625
627
 
628
+ export interface IUserPushSubscription extends IClrEntity {
629
+ readonly subscriptionID?: number;
630
+ userID?: number;
631
+ mailboxID?: number | null;
632
+ emailAddressID?: number | null;
633
+ notify?: boolean;
634
+ user?: IUser;
635
+ }
636
+
637
+ export const UserPushSubscription: IModel<IUserPushSubscription> = new Model<IUserPushSubscription>("UserPushSubscription", ["subscriptionID"], { notify: false });
638
+
626
639
  export interface IUserRole extends IClrEntity {
627
640
  userID?: number;
628
641
  roleName?: string;
@@ -738,115 +751,3 @@ export interface ITag extends IClrEntity {
738
751
  }
739
752
 
740
753
  export const Tag: IModel<ITag> = new Model<ITag>("Tag", ["tagID"], { name: "",isSystemTag: false });
741
-
742
- export interface IProduct extends IClrEntity {
743
- productID?: string;
744
- name?: string;
745
- description?: string | null;
746
- prices?: ICollection<IProductPrice>;
747
- }
748
-
749
- export const Product: IModel<IProduct> = new Model<IProduct>("Product", ["productID"], { name: "" });
750
-
751
- export interface IProductPrice extends IClrEntity {
752
- priceID?: string;
753
- productID?: string;
754
- quantity?: number;
755
- amount?: number;
756
- isActive?: boolean;
757
- currency?: string;
758
- product?: IProduct;
759
- licenses?: ICollection<IAppLicense>;
760
- }
761
-
762
- export const ProductPrice: IModel<IProductPrice> = new Model<IProductPrice>("ProductPrice", ["priceID"], { quantity: 0,amount: 0,isActive: false,currency: "" });
763
-
764
- export interface IAppLicense extends IClrEntity {
765
- readonly licenseID?: number;
766
- customerID?: number;
767
- priceID?: string;
768
- dateCreated?: DateTime;
769
- dateExpiry?: DateTime;
770
- dateUpdated?: DateTime;
771
- maxCores?: number;
772
- licenseCode?: string;
773
- customer?: IUser;
774
- price?: IProductPrice;
775
- }
776
-
777
- export const AppLicense: IModel<IAppLicense> = new Model<IAppLicense>("AppLicense", ["licenseID","priceID"], { dateCreated: new DefaultFactory(() => new DateTime()),dateExpiry: new DefaultFactory(() => new DateTime()),dateUpdated: new DefaultFactory(() => new DateTime()),maxCores: 0,licenseCode: "" });
778
-
779
- export interface IVirtualServer extends IClrEntity {
780
- readonly serverID?: number;
781
- serverName?: string;
782
- ownerEmailAddress?: string | null;
783
- ownerPhoneNumber?: string | null;
784
- active?: boolean;
785
- bucketName?: string | null;
786
- database?: string | null;
787
- host?: string;
788
- forwardHost?: string | null;
789
- forwardPublicKey?: string | null;
790
- environmentVariables?: string | null;
791
- maxStorageGB?: number;
792
- dnsZones?: ICollection<IDnsZone>;
793
- }
794
-
795
- export const VirtualServer: IModel<IVirtualServer> = new Model<IVirtualServer>("VirtualServer", ["serverID"], { serverName: "",active: false,host: "",maxStorageGB: 0 });
796
-
797
- export interface IDnsZone extends IClrEntity {
798
- readonly zoneID?: number;
799
- serverID?: number;
800
- zone?: string;
801
- keySigningKeyID?: number;
802
- zoneSigningKeyID?: number;
803
- dateCreated?: DateTime;
804
- dateUpdated?: DateTime;
805
- signed?: string | null;
806
- unsigned?: string | null;
807
- virtualServer?: IVirtualServer;
808
- ksk?: IDnsSigningKey;
809
- zsk?: IDnsSigningKey;
810
- records?: ICollection<IDnsZoneRecord>;
811
- }
812
-
813
- export const DnsZone: IModel<IDnsZone> = new Model<IDnsZone>("DnsZone", ["zoneID"], { zone: "",dateCreated: new DefaultFactory(() => new DateTime()),dateUpdated: new DefaultFactory(() => new DateTime()) });
814
-
815
- export interface IDnsZoneRecord extends IClrEntity {
816
- readonly recordID?: number;
817
- zoneID?: number;
818
- disabled?: boolean;
819
- name?: string;
820
- type?: "A" | "AAAA" | "CNAME" | "MX" | "TXT" | "PTR" | "SRV" | "CAA" | "NS" | "SOA";
821
- isAlias?: boolean;
822
- value?: string;
823
- ttl?: number;
824
- dateCreated?: DateTime;
825
- dateUpdated?: DateTime;
826
- notes?: string | null;
827
- signature?: string | null;
828
- expiryDate?: DateTime | null;
829
- readonly fqdn?: string | null;
830
- hosted?: boolean;
831
- zone?: IDnsZone;
832
- }
833
-
834
- export const DnsZoneRecordTypeArray = [{"label":"A","value":"A"},{"label":"AAAA","value":"AAAA"},{"label":"CNAME","value":"CNAME"},{"label":"MX","value":"MX"},{"label":"TXT","value":"TXT"},{"label":"PTR","value":"PTR"},{"label":"SRV","value":"SRV"},{"label":"CAA","value":"CAA"},{"label":"NS","value":"NS"},{"label":"SOA","value":"SOA"}];
835
-
836
- export const DnsZoneRecord: IModel<IDnsZoneRecord> = new Model<IDnsZoneRecord>("DnsZoneRecord", ["recordID"], { disabled: false,name: "",type: "A",isAlias: false,value: "",ttl: 0,dateCreated: new DefaultFactory(() => new DateTime()),dateUpdated: new DefaultFactory(() => new DateTime()),hosted: false });
837
-
838
- export interface IDnsSigningKey extends IClrEntity {
839
- readonly keyID?: number;
840
- publicKey?: string;
841
- digestAlgorithm?: number;
842
- signingAlgorithm?: number;
843
- digest?: string;
844
- flags?: number;
845
- dateCreated?: DateTime;
846
- expiryDate?: DateTime;
847
- fileName?: string;
848
- kskZones?: ICollection<IDnsZone>;
849
- zskZones?: ICollection<IDnsZone>;
850
- }
851
-
852
- export const DnsSigningKey: IModel<IDnsSigningKey> = new Model<IDnsSigningKey>("DnsSigningKey", ["keyID"], { publicKey: "",digestAlgorithm: 0,signingAlgorithm: 0,digest: "",flags: 0,dateCreated: new DefaultFactory(() => new DateTime()),expiryDate: new DefaultFactory(() => new DateTime()),fileName: "" });
@@ -48,30 +48,9 @@ export default class WebPushService {
48
48
  return s;
49
49
  }
50
50
  async updateRegistration(s: PushSubscription) {
51
- const endpoint = s.endpoint;
52
- const expirationTime = s.expirationTime;
53
51
 
54
- const toHex = (a: ArrayBuffer) => {
55
- let n = "";
56
- const u = new Uint8Array(a);
57
- for (const iterator of u) {
58
- n += iterator.toString(16).padStart(2, '0');
59
- }
60
- return n;
61
- };
62
-
63
- const p256dh = toHex(s.getKey("p256dh"));
64
- const auth = toHex(s.getKey("auth"));
65
- const json = {
66
- endpoint,
67
- expirationTime,
68
- keys: {
69
- p256dh,
70
- auth
71
- }
72
- };
73
52
  const session = await this.entityService.query(LoginSession, "currentUser").firstOrDefault();
74
- session.deviceToken = JSON.stringify(json);
53
+ session.deviceToken = JSON.stringify(s);
75
54
  session.deviceTokenType = "WebPush";
76
55
  const cloner = this.entityService.cloner(session);
77
56
  await this.entityService.save(cloner.copy);
@@ -22,6 +22,8 @@ import Switch from "@web-atoms/web-controls/dist/basic/Switch";
22
22
  import Checkbox from "@web-atoms/web-controls/dist/basic/Checkbox";
23
23
  import ToggleButtonBar from "@web-atoms/web-controls/dist/basic/ToggleButtonBar";
24
24
  import AddMiniContactPage from "./contact/AddMiniContactPage";
25
+ import PopupService from "@web-atoms/core/dist/web/services/PopupService";
26
+ import MailboxService from "../../../common/pages/mailboxes/services/MailboxService";
25
27
 
26
28
  const css = styled.css `
27
29
  &[data-page-type=master-detail] {
@@ -166,6 +168,7 @@ export default class MailsPage extends MasterDetailPage {
166
168
  // </div>}
167
169
  // /></div>;
168
170
  document.title = mailbox.emailAddress?.emailAddress;
171
+ this.updateNotifications(mailbox);
169
172
  if (isMobileView) {
170
173
  this.headerRenderer = () => <div data-layout="row">
171
174
  <input value={Bind.twoWaysImmediate(() => this.search)} type="search" placeholder="Sender Search"/>
@@ -325,4 +328,24 @@ export default class MailsPage extends MasterDetailPage {
325
328
  this.selectedThread = existing;
326
329
  }
327
330
 
331
+ @Action({ onEvent: "update-mailbox-notify"})
332
+ async updateMailboxNotify() {
333
+ const m = this.currentMailbox;
334
+ const message = m.notify
335
+ ? `Disable notification for this ${m.emailAddress?.name || ""} ${m.emailAddress?.emailAddress}?`
336
+ : `Enable notification for this ${m.emailAddress?.name || ""} ${m.emailAddress?.emailAddress}?`;
337
+ if(!await PopupService.confirm({ message , title :"Are you sure"})) {
338
+ return;
339
+ }
340
+ await this.resolve(MailboxService).toggleNotify(m);
341
+ this.updateNotifications(m);
342
+ }
343
+
344
+ private updateNotifications(mailbox: IMailbox) {
345
+ this.actionRenderer = () => <i
346
+ class={mailbox.notify ? "fad fa-bell" : "fad fa-bell-slash"}
347
+ title={mailbox.notify ? "Disable Notifications" : "Enable Notifications"}
348
+ data-click-event="update-mailbox-notify" />;
349
+ }
350
+
328
351
  }
@@ -1,7 +1,7 @@
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, IAppFile, IEmail, Mailbox, MailboxContact } from "../../../../model/model";
4
+ import { AppFile, Email, EmailAddress, IAppFile, IEmail, Mailbox, MailboxContact, UserPushSubscription } from "../../../../model/model";
5
5
  import { Sql } from "../../../../common/Sql";
6
6
  import { CommonEvents } from "../../../../common/events/CommonEvents";
7
7
 
@@ -12,10 +12,15 @@ export default class MailService {
12
12
  private entityService: EntityService;
13
13
 
14
14
  async mailbox(mailboxID: number) {
15
- return this.entityService.query(Mailbox)
15
+ const mb = await this.entityService.query(Mailbox)
16
16
  .where({ mailboxID }, (p) => (x) => x.mailboxID === p.mailboxID)
17
17
  .include((x) => x.emailAddress)
18
18
  .firstOrDefault();
19
+ const notify = await this.entityService.query(UserPushSubscription)
20
+ .where({ mailboxID }, (p) => (x) => x.mailboxID === p.mailboxID && x.emailAddressID === null)
21
+ .firstOrDefault();
22
+ mb.notify = !!notify;
23
+ return mb;
19
24
  }
20
25
 
21
26
  async list({