43 lines
865 B
TypeScript
43 lines
865 B
TypeScript
// Copyright 2022 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
import type { ConversationAttributesType } from '../model-types.d';
|
|
import { isConversationMuted } from './isConversationMuted';
|
|
|
|
export function getConversationUnreadCountForAppBadge(
|
|
conversation: Readonly<
|
|
Pick<
|
|
ConversationAttributesType,
|
|
| 'active_at'
|
|
| 'isArchived'
|
|
| 'markedUnread'
|
|
| 'muteExpiresAt'
|
|
| 'unreadCount'
|
|
>
|
|
>,
|
|
canCountMutedConversations: boolean
|
|
): number {
|
|
const { isArchived, markedUnread, unreadCount } = conversation;
|
|
|
|
if (!conversation.active_at) {
|
|
return 0;
|
|
}
|
|
|
|
if (isArchived) {
|
|
return 0;
|
|
}
|
|
|
|
if (!canCountMutedConversations && isConversationMuted(conversation)) {
|
|
return 0;
|
|
}
|
|
|
|
if (unreadCount) {
|
|
return unreadCount;
|
|
}
|
|
|
|
if (markedUnread) {
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|