// 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; }