63 lines
1.5 KiB
TypeScript
63 lines
1.5 KiB
TypeScript
|
// Copyright 2021 Signal Messenger, LLC
|
||
|
// SPDX-License-Identifier: AGPL-3.0-only
|
||
|
|
||
|
import type { ConversationAttributesType } from '../model-types';
|
||
|
|
||
|
import { ToastType } from '../state/ducks/toast';
|
||
|
import {
|
||
|
isDirectConversation,
|
||
|
isGroupV1,
|
||
|
isGroupV2,
|
||
|
} from './whatTypeOfConversation';
|
||
|
|
||
|
const MAX_MESSAGE_BODY_LENGTH = 64 * 1024;
|
||
|
|
||
|
export function shouldShowInvalidMessageToast(
|
||
|
conversationAttributes: ConversationAttributesType,
|
||
|
messageText?: string
|
||
|
): ToastType | undefined {
|
||
|
if (window.reduxStore.getState().expiration.hasExpired) {
|
||
|
return ToastType.Expired;
|
||
|
}
|
||
|
|
||
|
const isValid =
|
||
|
isDirectConversation(conversationAttributes) ||
|
||
|
isGroupV1(conversationAttributes) ||
|
||
|
isGroupV2(conversationAttributes);
|
||
|
|
||
|
if (!isValid) {
|
||
|
return ToastType.InvalidConversation;
|
||
|
}
|
||
|
|
||
|
const { e164, uuid } = conversationAttributes;
|
||
|
if (
|
||
|
isDirectConversation(conversationAttributes) &&
|
||
|
((e164 && window.storage.blocked.isBlocked(e164)) ||
|
||
|
(uuid && window.storage.blocked.isUuidBlocked(uuid)))
|
||
|
) {
|
||
|
return ToastType.Blocked;
|
||
|
}
|
||
|
|
||
|
const { groupId } = conversationAttributes;
|
||
|
if (
|
||
|
!isDirectConversation(conversationAttributes) &&
|
||
|
groupId &&
|
||
|
window.storage.blocked.isGroupBlocked(groupId)
|
||
|
) {
|
||
|
return ToastType.BlockedGroup;
|
||
|
}
|
||
|
|
||
|
if (
|
||
|
!isDirectConversation(conversationAttributes) &&
|
||
|
conversationAttributes.left
|
||
|
) {
|
||
|
return ToastType.LeftGroup;
|
||
|
}
|
||
|
|
||
|
if (messageText && messageText.length > MAX_MESSAGE_BODY_LENGTH) {
|
||
|
return ToastType.MessageBodyTooLong;
|
||
|
}
|
||
|
|
||
|
return undefined;
|
||
|
}
|