// Copyright 2023 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only import { createSelector } from 'reselect'; import type { StateType } from '../reducer'; import { NavTab, type NavStateType } from '../ducks/nav'; import { getAllConversationsUnreadStats } from './conversations'; import { getStoriesNotificationCount } from './stories'; import type { UnreadStats } from '../../util/countUnreadStats'; import { getCallHistoryUnreadCount } from './callHistory'; function getNav(state: StateType): NavStateType { return state.nav; } export const getSelectedNavTab = createSelector(getNav, nav => { return nav.selectedNavTab; }); export const getOtherTabsUnreadStats = createSelector( getSelectedNavTab, getAllConversationsUnreadStats, getCallHistoryUnreadCount, getStoriesNotificationCount, ( selectedNavTab, conversationsUnreadStats, callHistoryUnreadCount, storiesNotificationCount ): UnreadStats => { let unreadCount = 0; let unreadMentionsCount = 0; let markedUnread = false; if (selectedNavTab !== NavTab.Chats) { unreadCount += conversationsUnreadStats.unreadCount; unreadMentionsCount += conversationsUnreadStats.unreadMentionsCount; markedUnread ||= conversationsUnreadStats.markedUnread; } // Note: Conversation unread stats includes the call history unread count. if (selectedNavTab !== NavTab.Calls) { unreadCount += callHistoryUnreadCount; } if (selectedNavTab !== NavTab.Stories) { unreadCount += storiesNotificationCount; } return { unreadCount, unreadMentionsCount, markedUnread, }; } );