diff --git a/models/notification/src/index.ts b/models/notification/src/index.ts index b6046ce194..c32bc01f6c 100644 --- a/models/notification/src/index.ts +++ b/models/notification/src/index.ts @@ -41,6 +41,7 @@ import { EmailNotification, Notification, NotificationGroup, + NotificationPreferencesGroup, notificationId, NotificationObjectPresenter, NotificationPreview, @@ -118,6 +119,13 @@ export class TNotificationGroup extends TDoc implements NotificationGroup { objectClass?: Ref> } +@Model(notification.class.NotificationPreferencesGroup, core.class.Doc, DOMAIN_MODEL) +export class TNotificationPreferencesGroup extends TDoc implements NotificationPreferencesGroup { + label!: IntlString + icon!: Asset + presenter!: AnyComponent +} + @Model(notification.class.NotificationProvider, core.class.Doc, DOMAIN_MODEL) export class TNotificationProvider extends TDoc implements NotificationProvider { label!: IntlString @@ -178,6 +186,7 @@ export function createModel (builder: Builder): void { TNotificationProvider, TNotificationSetting, TNotificationGroup, + TNotificationPreferencesGroup, TClassCollaborators, TCollaborators, TDocUpdates, diff --git a/plugins/notification-resources/src/components/NotificationSettings.svelte b/plugins/notification-resources/src/components/NotificationSettings.svelte index 6262ff743e..de1eecedce 100644 --- a/plugins/notification-resources/src/components/NotificationSettings.svelte +++ b/plugins/notification-resources/src/components/NotificationSettings.svelte @@ -14,7 +14,13 @@ -->
@@ -53,6 +72,20 @@
+ {#each preferencesGroups as preferenceGroup} + { + currentPreferenceGroup = preferenceGroup + group = undefined + }} + /> + {/each} + {#if preferencesGroups.length > 0 && groups.length > 0} +
+ {/if} {#each groups as gr} { group = gr._id + currentPreferenceGroup = undefined }} /> {/each} @@ -69,5 +103,10 @@ {#if group} {/if} + {#if currentPreferenceGroup} + {#await getResource(currentPreferenceGroup.presenter) then presenter} + + {/await} + {/if}
diff --git a/plugins/notification/src/index.ts b/plugins/notification/src/index.ts index 16a1e3bbd4..e0c53c3944 100644 --- a/plugins/notification/src/index.ts +++ b/plugins/notification/src/index.ts @@ -77,6 +77,15 @@ export interface NotificationGroup extends Doc { objectClass?: Ref> } +/** + * @public + */ +export interface NotificationPreferencesGroup extends Doc { + label: IntlString + icon: Asset + presenter: AnyComponent +} + /** * @public */ @@ -218,7 +227,8 @@ const notification = plugin(notificationId, { NotificationProvider: '' as Ref>, NotificationSetting: '' as Ref>, DocUpdates: '' as Ref>, - NotificationGroup: '' as Ref> + NotificationGroup: '' as Ref>, + NotificationPreferencesGroup: '' as Ref> }, ids: { NotificationSettings: '' as Ref,