You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
session-desktop/ts/notifications/formatNotifications.ts

47 lines
1.6 KiB
TypeScript

import { ConversationInteractionStatus, ConversationInteractionType } from '../interactions/types';
import { ConvoHub } from '../session/conversations';
import { InteractionNotificationType } from '../state/ducks/types';
import { assertUnreachable } from '../types/sqlSharedTypes';
function formatInteractionNotification(
interactionNotification: InteractionNotificationType,
conversationId: string
) {
const { interactionType, interactionStatus } = interactionNotification;
// NOTE For now we only show interaction errors in the message history
if (interactionStatus === ConversationInteractionStatus.Error) {
const convo = ConvoHub.use().get(conversationId);
if (convo) {
const isGroup = !convo.isPrivate();
const isCommunity = convo.isPublic();
const conversationName = convo?.getRealSessionUsername() || window.i18n('unknown');
switch (interactionType) {
case ConversationInteractionType.Hide:
// there is no text for hiding changes
return '';
case ConversationInteractionType.Leave:
return isCommunity
? window.i18n('communityLeaveError', { community_name: conversationName })
: isGroup
? window.i18n('groupLeaveErrorFailed', { group_name: conversationName })
: null;
default:
assertUnreachable(
interactionType,
`Message.getDescription: Missing case error "${interactionType}"`
);
}
}
}
window.log.error('formatInteractionNotification: Unsupported case');
return null;
}
export const FormatNotifications = {
formatInteractionNotification,
};