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/session/disappearing_messages/legacy.ts

46 lines
1.6 KiB
TypeScript

// TODO legacy messages support will be removed in a future release
import { ProtobufUtils, SignalService } from '../../protobuf';
import { ReleasedFeatures } from '../../util/releaseFeature';
import { DisappearingMessageConversationModeType } from './types';
export function isLegacyDisappearingModeEnabled(
expirationMode: DisappearingMessageConversationModeType | undefined
): boolean {
return Boolean(
expirationMode &&
expirationMode !== 'off' &&
!ReleasedFeatures.isDisappearMessageV2FeatureReleasedCached()
);
}
export function checkIsLegacyDisappearingDataMessage(
couldBeLegacyContent: boolean,
dataMessage: SignalService.DataMessage
): boolean {
return (
couldBeLegacyContent &&
ProtobufUtils.hasDefinedProperty(dataMessage, 'expireTimer') &&
dataMessage.expireTimer > -1
);
}
function contentHasTimerProp(contentMessage: SignalService.Content) {
return ProtobufUtils.hasDefinedProperty(contentMessage, 'expirationTimer');
}
function contentHasTypeProp(contentMessage: SignalService.Content) {
return ProtobufUtils.hasDefinedProperty(contentMessage, 'expirationType');
}
/** Use this to check for legacy disappearing messages where the expirationType and expireTimer should be undefined on the ContentMessage */
export function couldBeLegacyDisappearingMessageContent(
contentMessage: SignalService.Content
): boolean {
const couldBe =
(contentMessage.expirationType === SignalService.Content.ExpirationType.UNKNOWN ||
ReleasedFeatures.isDisappearMessageV2FeatureReleasedCached()) &&
!contentHasTypeProp(contentMessage) &&
!contentHasTimerProp(contentMessage);
return couldBe;
}