From b289ce179e59cc7e8b484c8040a1633841f564de Mon Sep 17 00:00:00 2001 From: Ian Macdonald Date: Sat, 14 Jan 2023 19:57:11 +0100 Subject: [PATCH] Make default notification setting for conversations 'mentions only'. The current default of 'all' is very noisy, especially when restoring an account or linking a new device, which causes all instantiated conversations to start sending notifications. --- ts/components/leftpane/conversation-list-item/HeaderItem.tsx | 3 +-- ts/hooks/useParamSelector.ts | 2 +- ts/models/conversationAttributes.ts | 2 +- ts/node/database_utility.ts | 2 +- ts/node/migration/sessionMigrations.ts | 2 +- ts/state/selectors/conversations.ts | 5 ++--- ts/test/session/unit/models/ConversationModels_test.ts | 2 +- 7 files changed, 8 insertions(+), 10 deletions(-) diff --git a/ts/components/leftpane/conversation-list-item/HeaderItem.tsx b/ts/components/leftpane/conversation-list-item/HeaderItem.tsx index c6bb9034ca9..e171a17d840 100644 --- a/ts/components/leftpane/conversation-list-item/HeaderItem.tsx +++ b/ts/components/leftpane/conversation-list-item/HeaderItem.tsx @@ -38,6 +38,7 @@ const NotificationSettingIcon = (props: { isMessagesSection: boolean }) => { /> ); case 'mentions_only': + default: return ( { iconSize="small" /> ); - default: - return null; } }; diff --git a/ts/hooks/useParamSelector.ts b/ts/hooks/useParamSelector.ts index 2a5706af63b..4e5e18faf0e 100644 --- a/ts/hooks/useParamSelector.ts +++ b/ts/hooks/useParamSelector.ts @@ -93,7 +93,7 @@ export function useHasNickname(convoId?: string) { export function useNotificationSetting(convoId?: string) { const convoProps = useConversationPropsById(convoId); - return convoProps?.currentNotificationSetting || 'all'; + return convoProps?.currentNotificationSetting || 'mentions_only'; } export function useIsPublic(convoId?: string) { const convoProps = useConversationPropsById(convoId); diff --git a/ts/models/conversationAttributes.ts b/ts/models/conversationAttributes.ts index 69a8e859974..a7148c257da 100644 --- a/ts/models/conversationAttributes.ts +++ b/ts/models/conversationAttributes.ts @@ -90,7 +90,7 @@ export const fillConvoAttributesWithDefaults = ( lastMessageStatus: undefined, lastMessage: null, - triggerNotificationsFor: 'all', // if the settings is not set in the db, this is the default + triggerNotificationsFor: 'mentions_only', // if the settings is not set in the db, this is the default isTrustedForAttachmentDownload: false, // we don't trust a contact until we say so isPinned: false, diff --git a/ts/node/database_utility.ts b/ts/node/database_utility.ts index 17039750eb9..c9ece849596 100644 --- a/ts/node/database_utility.ts +++ b/ts/node/database_utility.ts @@ -145,7 +145,7 @@ export function formatRowOfConversation(row?: Record): Conversation } if (!convo.triggerNotificationsFor) { - convo.triggerNotificationsFor = 'all'; + convo.triggerNotificationsFor = 'mentions_only'; } if (!convo.unreadCount) { diff --git a/ts/node/migration/sessionMigrations.ts b/ts/node/migration/sessionMigrations.ts index 8c2ed8b408e..b71b8c54529 100644 --- a/ts/node/migration/sessionMigrations.ts +++ b/ts/node/migration/sessionMigrations.ts @@ -729,7 +729,7 @@ function updateToSessionSchemaVersion24(currentVersion: number, db: BetterSqlite ALTER TABLE ${CONVERSATIONS_TABLE} ADD COLUMN avatarHash TEXT; -- only used for opengroup avatar. ALTER TABLE ${CONVERSATIONS_TABLE} ADD COLUMN nickname TEXT; ALTER TABLE ${CONVERSATIONS_TABLE} ADD COLUMN profileKey TEXT; - ALTER TABLE ${CONVERSATIONS_TABLE} ADD COLUMN triggerNotificationsFor TEXT DEFAULT "all"; + ALTER TABLE ${CONVERSATIONS_TABLE} ADD COLUMN triggerNotificationsFor TEXT DEFAULT "mentions_only"; ALTER TABLE ${CONVERSATIONS_TABLE} ADD COLUMN isTrustedForAttachmentDownload INTEGER DEFAULT "FALSE"; ALTER TABLE ${CONVERSATIONS_TABLE} ADD COLUMN isPinned INTEGER DEFAULT "FALSE"; ALTER TABLE ${CONVERSATIONS_TABLE} ADD COLUMN isApproved INTEGER DEFAULT "FALSE"; diff --git a/ts/state/selectors/conversations.ts b/ts/state/selectors/conversations.ts index 563db45f867..3b2a821f564 100644 --- a/ts/state/selectors/conversations.ts +++ b/ts/state/selectors/conversations.ts @@ -577,12 +577,11 @@ export const getCurrentNotificationSettingText = createSelector(getSelectedConve switch (state.currentNotificationSetting) { case 'all': return window.i18n('notificationForConvo_all'); - case 'mentions_only': - return window.i18n('notificationForConvo_mentions_only'); case 'disabled': return window.i18n('notificationForConvo_disabled'); + case 'mentions_only': default: - return window.i18n('notificationForConvo_all'); + return window.i18n('notificationForConvo_mentions_only'); } }); diff --git a/ts/test/session/unit/models/ConversationModels_test.ts b/ts/test/session/unit/models/ConversationModels_test.ts index 048c8ba0745..1bc36e010f9 100644 --- a/ts/test/session/unit/models/ConversationModels_test.ts +++ b/ts/test/session/unit/models/ConversationModels_test.ts @@ -163,7 +163,7 @@ describe('fillConvoAttributesWithDefaults', () => { it('initialize triggerNotificationsFor if not given', () => { expect(fillConvoAttributesWithDefaults({} as ConversationAttributes)).to.have.deep.property( 'triggerNotificationsFor', - 'all' + 'mentions_only' ); });