@CassOnMars
After the type cleanup in quorum-shared#18 / quorum-desktop#160, desktop and mobile have noticeably different models for per-space notification preferences:
Desktop (UserConfig.notificationSettings[spaceId], synced):
{ spaceId, enabledNotificationTypes: ('mention-you' | 'mention-everyone' | 'mention-roles' | 'reply')[], isMuted? }
Plus a separate UserConfig.mutedChannels[spaceId]: string[] for per-channel mute (also synced).
Mobile (services/notifications/notificationPrefs.ts, local MMKV, mirrored to iOS App Group for NSE):
global:enabled / space:<id> / channel:<spaceId>:<id> → boolean tree, AND-resolved
Today neither side reads the other's shape. Mute a space on desktop → mobile still pings, and vice versa.
Two questions to settle direction before more notifications work lands in shared:
-
Per-space and per-channel mute - desktop already syncs these via UserConfig.notificationSettings[spaceId].isMuted and UserConfig.mutedChannels[spaceId]. Mobile keeps its own copies in local MMKV instead. Simplest convergence: mobile reads those UserConfig fields into MMKV at config-load, writes back on toggle. Is this the pattern you want?
-
Granular trigger types (mention-you / mention-everyone / mention-roles / reply) - desktop has the per-space dropdown, mobile doesn't. Want mobile to add it, or want desktop to drop it?
@CassOnMars
After the type cleanup in quorum-shared#18 / quorum-desktop#160, desktop and mobile have noticeably different models for per-space notification preferences:
Desktop (
UserConfig.notificationSettings[spaceId], synced):Plus a separate
UserConfig.mutedChannels[spaceId]: string[]for per-channel mute (also synced).Mobile (
services/notifications/notificationPrefs.ts, local MMKV, mirrored to iOS App Group for NSE):Today neither side reads the other's shape. Mute a space on desktop → mobile still pings, and vice versa.
Two questions to settle direction before more notifications work lands in shared:
Per-space and per-channel mute - desktop already syncs these via
UserConfig.notificationSettings[spaceId].isMutedandUserConfig.mutedChannels[spaceId]. Mobile keeps its own copies in local MMKV instead. Simplest convergence: mobile reads thoseUserConfigfields into MMKV at config-load, writes back on toggle. Is this the pattern you want?Granular trigger types (
mention-you/mention-everyone/mention-roles/reply) - desktop has the per-space dropdown, mobile doesn't. Want mobile to add it, or want desktop to drop it?