diff --git a/src/components/extra_notifications/extra_notifications.js b/src/components/extra_notifications/extra_notifications.js index 1f3c6e6d..cd687eaf 100644 --- a/src/components/extra_notifications/extra_notifications.js +++ b/src/components/extra_notifications/extra_notifications.js @@ -3,15 +3,29 @@ import { mapGetters } from 'vuex' const ExtraNotifications = { computed: { shouldShowChats () { - return this.unreadChatCount + return this.mergedConfig.showExtraNotifications && this.mergedConfig.showChatsInExtraNotifications && this.unreadChatCount }, shouldShowAnnouncements () { - return this.unreadAnnouncementCount + return this.mergedConfig.showExtraNotifications && this.mergedConfig.showAnnouncementsInExtraNotifications && this.unreadAnnouncementCount }, shouldShowFollowRequests () { - return this.followRequestCount + return this.mergedConfig.showExtraNotifications && this.mergedConfig.showFollowRequestsInExtraNotifications && this.followRequestCount }, - ...mapGetters(['unreadChatCount', 'unreadAnnouncementCount', 'followRequestCount']) + hasAnythingToShow () { + return this.shouldShowChats || this.shouldShowAnnouncements || this.shouldShowFollowRequests + }, + shouldShowCustomizationTip () { + return this.mergedConfig.showExtraNotificationsTip && this.hasAnythingToShow + }, + ...mapGetters(['unreadChatCount', 'unreadAnnouncementCount', 'followRequestCount', 'mergedConfig']) + }, + methods: { + openNotificationSettings () { + return this.$store.dispatch('openSettingsModalTab', 'notifications') + }, + dismissConfigurationTip () { + return this.$store.dispatch('setOption', { name: 'showExtraNotificationsTip', value: false }) + } } } diff --git a/src/components/extra_notifications/extra_notifications.vue b/src/components/extra_notifications/extra_notifications.vue index f5cf1661..d5edf399 100644 --- a/src/components/extra_notifications/extra_notifications.vue +++ b/src/components/extra_notifications/extra_notifications.vue @@ -21,6 +21,29 @@ > {{ $tc('notifications.unread_follow_requests', followRequestCount, { num: followRequestCount }) }} + + + + @@ -45,5 +68,9 @@ border-color: $fallback--border; border-color: var(--border, $fallback--border); } + + .tip { + display: inline; + } } diff --git a/src/components/settings_modal/tabs/notifications_tab.vue b/src/components/settings_modal/tabs/notifications_tab.vue index fcb92135..4dfba444 100644 --- a/src/components/settings_modal/tabs/notifications_tab.vue +++ b/src/components/settings_modal/tabs/notifications_tab.vue @@ -51,6 +51,47 @@ +
  • + + {{ $t('settings.notification_show_extra') }} + +
  • +
  • + +
  • diff --git a/src/i18n/en.json b/src/i18n/en.json index 62e80ce3..90e33648 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -208,7 +208,10 @@ "poll_ended": "poll has ended", "unread_announcements": "{num} unread announcement | {num} unread announcements", "unread_chats": "{num} unread chat | {num} unread chats", - "unread_follow_requests": "{num} new follow request | {num} new follow requests" + "unread_follow_requests": "{num} new follow request | {num} new follow requests", + "configuration_tip": "You can customize what to display here in {theSettings}. {dismiss}", + "configuration_tip_settings": "the settings", + "configuration_tip_dismiss": "Do not show again" }, "polls": { "add_poll": "Add poll", @@ -562,6 +565,11 @@ "notification_visibility_moves": "User Migrates", "notification_visibility_emoji_reactions": "Reactions", "notification_visibility_polls": "Ends of polls you voted in", + "notification_show_extra": "Show extra notifications in the notifications column", + "notification_extra_chats": "Show unread chats", + "notification_extra_announcements": "Show unread announcements", + "notification_extra_follow_requests": "Show new follow requests", + "notification_extra_tip": "Show the customization tip for extra notifications", "no_rich_text_description": "Strip rich text formatting from all posts", "no_blocks": "No blocks", "no_mutes": "No mutes", diff --git a/src/modules/config.js b/src/modules/config.js index 56f8cba5..dda3d221 100644 --- a/src/modules/config.js +++ b/src/modules/config.js @@ -117,6 +117,11 @@ export const defaultState = { conversationTreeAdvanced: undefined, // instance default conversationOtherRepliesButton: undefined, // instance default conversationTreeFadeAncestors: undefined, // instance default + showExtraNotifications: undefined, // instance default + showExtraNotificationsTip: undefined, // instance default + showChatsInExtraNotifications: undefined, // instance default + showAnnouncementsInExtraNotifications: undefined, // instance default + showFollowRequestsInExtraNotifications: undefined, // instance default maxDepthInThread: undefined, // instance default autocompleteSelect: undefined // instance default } diff --git a/src/modules/instance.js b/src/modules/instance.js index bb0292da..3972bd29 100644 --- a/src/modules/instance.js +++ b/src/modules/instance.js @@ -103,6 +103,11 @@ const defaultState = { conversationTreeAdvanced: false, conversationOtherRepliesButton: 'below', conversationTreeFadeAncestors: false, + showExtraNotifications: true, + showExtraNotificationsTip: true, + showChatsInExtraNotifications: true, + showAnnouncementsInExtraNotifications: true, + showFollowRequestsInExtraNotifications: true, maxDepthInThread: 6, autocompleteSelect: false,