refactor: export functions from an object for stubbing

for disappearing messages index file
pull/2971/head
William Grant 2 years ago
parent c644c644c9
commit 04c3f69398

@ -10,7 +10,7 @@ import { StorageItem } from '../node/storage_item';
import { HexKeyPair } from '../receiver/keypairs';
import { Quote } from '../receiver/types';
import { getSodiumRenderer } from '../session/crypto';
import { updateExpiringMessagesCheck } from '../session/disappearing_messages';
import { DisappearingMessages } from '../session/disappearing_messages';
import { PubKey } from '../session/types';
import { fromArrayBufferToBase64, fromBase64ToArrayBuffer } from '../session/utils/String';
import {
@ -244,7 +244,7 @@ async function updateLastHash(data: UpdateLastHashType): Promise<void> {
async function saveMessage(data: MessageAttributes): Promise<string> {
const cleanedData = cleanData(data);
const id = await channels.saveMessage(cleanedData);
updateExpiringMessagesCheck();
DisappearingMessages.updateExpiringMessagesCheck();
return id;
}

@ -16,7 +16,7 @@ import { deleteAllLogs } from '../node/logs';
import { queueAllCached } from '../receiver/receiver';
import { loadKnownBlindedKeys } from '../session/apis/open_group_api/sogsv3/knownBlindedkeys';
import { getConversationController } from '../session/conversations';
import { initExpiringMessageListener } from '../session/disappearing_messages';
import { DisappearingMessages } from '../session/disappearing_messages';
import { AttachmentDownloads, ToastUtils } from '../session/utils';
import { getOurPubKeyStrFromCache } from '../session/utils/User';
import { runners } from '../session/utils/job_runners/JobRunner';
@ -293,7 +293,7 @@ async function start() {
ReactDOM.render(<SessionRegistrationView />, document.getElementById('root'));
switchBodyToRtlIfNeeded();
}
initExpiringMessageListener();
DisappearingMessages.initExpiringMessageListener();
if (Registration.isDone() && !isSignInByLinking()) {
await connect();

@ -117,10 +117,7 @@ import {
getSubscriberCountOutsideRedux,
} from '../state/selectors/sogsRoomInfo'; // decide it it makes sense to move this to a redux slice?
import {
changeToDisappearingMessageType,
setExpirationStartTimestamp,
} from '../session/disappearing_messages';
import { DisappearingMessages } from '../session/disappearing_messages';
import { DisappearingMessageConversationModeType } from '../session/disappearing_messages/types';
import { markAttributesAsReadIfNeeded } from './messageFactory';
@ -753,7 +750,7 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
preview,
attachments,
sent_at: networkTimestamp,
expirationType: changeToDisappearingMessageType(
expirationType: DisappearingMessages.changeToDisappearingMessageType(
this,
this.getExpireTimer(),
this.getExpirationMode()
@ -886,7 +883,11 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
});
let message: MessageModel | undefined = existingMessage || undefined;
const expirationType = changeToDisappearingMessageType(this, expireTimer, expirationMode);
const expirationType = DisappearingMessages.changeToDisappearingMessageType(
this,
expireTimer,
expirationMode
);
const commonAttributes = {
flags: SignalService.DataMessage.Flags.EXPIRATION_TIMER_UPDATE,
@ -940,7 +941,7 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
expirationMode === 'deleteAfterSend'
) {
message.set({
expirationStartTimestamp: setExpirationStartTimestamp(
expirationStartTimestamp: DisappearingMessages.setExpirationStartTimestamp(
expirationMode,
message.get('sent_at'),
'updateExpireTimer() remote change',

@ -45,12 +45,7 @@ import { isUsAnySogsFromCache } from '../session/apis/open_group_api/sogsv3/know
import { GetNetworkTime } from '../session/apis/snode_api/getNetworkTime';
import { SnodeNamespaces } from '../session/apis/snode_api/namespaces';
import { DURATION } from '../session/constants';
import {
changeToDisappearingConversationMode,
checkForExpireUpdateInContentMessage,
setExpirationStartTimestamp,
updateMessageExpiryOnSwarm,
} from '../session/disappearing_messages';
import { DisappearingMessages } from '../session/disappearing_messages';
import { TimerOptions } from '../session/disappearing_messages/timerOptions';
import { OpenGroupVisibleMessage } from '../session/messages/outgoing/visibleMessage/OpenGroupVisibleMessage';
import {
@ -267,7 +262,7 @@ export class MessageModel extends Backbone.Model<MessageAttributes> {
return '';
}
const expirationMode = changeToDisappearingConversationMode(
const expirationMode = DisappearingMessages.changeToDisappearingConversationMode(
convo,
expireTimerUpdate?.expirationType,
expireTimer
@ -334,7 +329,7 @@ export class MessageModel extends Backbone.Model<MessageAttributes> {
}
const { expireTimer, fromSync, source } = timerUpdate;
const expirationMode = changeToDisappearingConversationMode(
const expirationMode = DisappearingMessages.changeToDisappearingConversationMode(
convo,
timerUpdate?.expirationType || 'unknown',
expireTimer || 0
@ -1022,7 +1017,11 @@ export class MessageModel extends Backbone.Model<MessageAttributes> {
throw new Error('Cannot trigger syncMessage with unknown convo.');
}
const expireUpdate = await checkForExpireUpdateInContentMessage(content, conversation, true);
const expireUpdate = await DisappearingMessages.checkForExpireUpdateInContentMessage(
content,
conversation,
true
);
const syncMessage = buildSyncMessage(
this.id,
@ -1108,7 +1107,7 @@ export class MessageModel extends Backbone.Model<MessageAttributes> {
const expireTimer = this.getExpireTimer();
if (canBeDeleteAfterRead && expirationType && expireTimer > 0) {
const expirationMode = changeToDisappearingConversationMode(
const expirationMode = DisappearingMessages.changeToDisappearingConversationMode(
convo,
expirationType,
expireTimer
@ -1117,11 +1116,15 @@ export class MessageModel extends Backbone.Model<MessageAttributes> {
if (expirationMode === 'legacy' || expirationMode === 'deleteAfterRead') {
if (this.isIncoming() && !this.isExpiring()) {
// NOTE We want to trigger disappearing now and then the TTL can update itself while it is running. Otherwise the UI is blocked until the request is completed.
void updateMessageExpiryOnSwarm(this, 'markMessageReadNoCommit()', true);
void DisappearingMessages.updateMessageExpiryOnSwarm(
this,
'markMessageReadNoCommit()',
true
);
}
this.set({
expirationStartTimestamp: setExpirationStartTimestamp(
expirationStartTimestamp: DisappearingMessages.setExpirationStartTimestamp(
expirationMode,
readAt,
'markMessageReadNoCommit',

@ -22,12 +22,7 @@ import { findCachedBlindedMatchOrLookupOnAllServers } from '../session/apis/open
import { getConversationController } from '../session/conversations';
import { concatUInt8Array, getSodiumRenderer } from '../session/crypto';
import { removeMessagePadding } from '../session/crypto/BufferPadding';
import {
changeToDisappearingMessageType,
checkForExpireUpdateInContentMessage,
checkHasOutdatedDisappearingMessageClient,
setExpirationStartTimestamp,
} from '../session/disappearing_messages';
import { DisappearingMessages } from '../session/disappearing_messages';
import { ProfileManager } from '../session/profile_manager/ProfileManager';
import { GroupUtils, UserUtils } from '../session/utils';
import { perfEnd, perfStart } from '../session/utils/Performance';
@ -475,7 +470,7 @@ export async function innerHandleSwarmContentMessage(
content.dataMessage.profileKey = null;
}
const expireUpdate = await checkForExpireUpdateInContentMessage(
const expireUpdate = await DisappearingMessages.checkForExpireUpdateInContentMessage(
content,
conversationModelForUIUpdate
);
@ -487,7 +482,7 @@ export async function innerHandleSwarmContentMessage(
// TODO legacy messages support will be removed in a future release
if (expireUpdate?.isDisappearingMessagesV2Released) {
await checkHasOutdatedDisappearingMessageClient(
await DisappearingMessages.checkHasOutdatedDisappearingMessageClient(
conversationModelForUIUpdate,
senderConversationModel,
expireUpdate
@ -866,13 +861,13 @@ export async function handleDataExtractionNotification(
if (convo && expirationMode && expireTimer > 0) {
expirationType =
expirationMode !== 'off'
? changeToDisappearingMessageType(convo, expireTimer, expirationMode)
? DisappearingMessages.changeToDisappearingMessageType(convo, expireTimer, expirationMode)
: undefined;
// NOTE Triggers disappearing for an incoming DataExtractionNotification message
// TODO legacy messages support will be removed in a future release
if (expirationMode === 'legacy' || expirationMode === 'deleteAfterSend') {
expirationStartTimestamp = setExpirationStartTimestamp(
expirationStartTimestamp = DisappearingMessages.setExpirationStartTimestamp(
expirationMode,
undefined,
'handleDataExtractionNotification'

@ -19,7 +19,7 @@ import {
createSwarmMessageSentFromNotUs,
createSwarmMessageSentFromUs,
} from '../models/messageFactory';
import { getMessageReadyToDisappear } from '../session/disappearing_messages';
import { DisappearingMessages } from '../session/disappearing_messages';
import { DisappearingMessageUpdate } from '../session/disappearing_messages/types';
import { ProfileManager } from '../session/profile_manager/ProfileManager';
import { isUsFromCache } from '../session/utils/User';
@ -257,7 +257,11 @@ export async function handleSwarmDataMessage(
});
if (!isEmpty(expireUpdate)) {
msgModel = getMessageReadyToDisappear(convoToAddMessageTo, msgModel, expireUpdate);
msgModel = DisappearingMessages.getMessageReadyToDisappear(
convoToAddMessageTo,
msgModel,
expireUpdate
);
}
await handleSwarmMessage(

@ -10,10 +10,7 @@ import { Quote } from './types';
import { ConversationTypeEnum } from '../models/conversationAttributes';
import { MessageDirection } from '../models/messageType';
import { SignalService } from '../protobuf';
import {
changeToDisappearingConversationMode,
setExpirationStartTimestamp,
} from '../session/disappearing_messages';
import { DisappearingMessages } from '../session/disappearing_messages';
import { ProfileManager } from '../session/profile_manager/ProfileManager';
import { PubKey } from '../session/types';
import { UserUtils } from '../session/utils';
@ -347,7 +344,7 @@ async function markConvoAsReadIfOutgoingMessage(
expireTimer > 0 &&
Boolean(message.getExpirationStartTimestamp()) === false
) {
const expirationMode = changeToDisappearingConversationMode(
const expirationMode = DisappearingMessages.changeToDisappearingConversationMode(
conversation,
expirationType,
expireTimer
@ -355,7 +352,7 @@ async function markConvoAsReadIfOutgoingMessage(
if (expirationMode !== 'off') {
message.set({
expirationStartTimestamp: setExpirationStartTimestamp(
expirationStartTimestamp: DisappearingMessages.setExpirationStartTimestamp(
expirationMode,
message.get('sent_at'),
'markConvoAsReadIfOutgoingMessage',
@ -397,7 +394,7 @@ export async function handleMessageJob(
messageModel.getExpireTimer() > 0 &&
Boolean(messageModel.getExpirationStartTimestamp()) === false
) {
const expirationMode = changeToDisappearingConversationMode(
const expirationMode = DisappearingMessages.changeToDisappearingConversationMode(
conversation,
messageModel.getExpirationType(),
messageModel.getExpireTimer()
@ -410,7 +407,7 @@ export async function handleMessageJob(
expirationMode === 'deleteAfterSend'
) {
messageModel.set({
expirationStartTimestamp: setExpirationStartTimestamp(
expirationStartTimestamp: DisappearingMessages.setExpirationStartTimestamp(
expirationMode,
messageModel.get('sent_at'),
'handleMessageJob',
@ -437,7 +434,7 @@ export async function handleMessageJob(
}
const expireTimerUpdate = expirationTimerUpdate?.expireTimer || 0;
const expirationModeUpdate = changeToDisappearingConversationMode(
const expirationModeUpdate = DisappearingMessages.changeToDisappearingConversationMode(
conversation,
expirationTimerUpdate?.expirationType,
expireTimerUpdate

@ -38,7 +38,7 @@ import { EnvelopePlus } from '../../../../receiver/types';
import { assertUnreachable } from '../../../../types/sqlSharedTypes';
import { getSodiumRenderer } from '../../../crypto';
import { removeMessagePadding } from '../../../crypto/BufferPadding';
import { destroyMessagesAndUpdateRedux } from '../../../disappearing_messages';
import { DisappearingMessages } from '../../../disappearing_messages';
import { UserUtils } from '../../../utils';
import { sogsRollingDeletions } from './sogsRollingDeletions';
import { processMessagesUsingCache } from './sogsV3MutationCache';
@ -182,7 +182,7 @@ const handleSogsV3DeletedMessages = async (
});
if (messageIds && messageIds.length) {
await destroyMessagesAndUpdateRedux(
await DisappearingMessages.destroyMessagesAndUpdateRedux(
messageIds.map(messageId => ({
conversationKey: convoId,
messageId,

@ -23,7 +23,7 @@ import {
DisappearingMessageUpdate,
} from './types';
export async function destroyMessagesAndUpdateRedux(
async function destroyMessagesAndUpdateRedux(
messages: Array<{
conversationKey: string;
messageId: string;
@ -131,7 +131,7 @@ const throttledCheckExpiringMessages = throttle(checkExpiringMessages, 1000);
let isInit = false;
export const initExpiringMessageListener = () => {
const initExpiringMessageListener = () => {
if (isInit) {
throw new Error('expiring messages listener is already init');
}
@ -143,11 +143,11 @@ export const initExpiringMessageListener = () => {
isInit = true;
};
export const updateExpiringMessagesCheck = () => {
const updateExpiringMessagesCheck = () => {
void throttledCheckExpiringMessages();
};
export function setExpirationStartTimestamp(
function setExpirationStartTimestamp(
mode: DisappearingMessageConversationModeType,
timestamp?: number,
// these are for debugging purposes
@ -224,7 +224,7 @@ export function setExpirationStartTimestamp(
* @param expirationMode DisappearingMessageConversationModeType
* @returns Disappearing mode we should use
*/
export function changeToDisappearingMessageType(
function changeToDisappearingMessageType(
convo: ConversationModel,
expireTimer: number,
expirationMode?: DisappearingMessageConversationModeType
@ -256,7 +256,7 @@ export function changeToDisappearingMessageType(
* @param expireTimer in seconds, 0 means no expiration
* @returns
*/
export function changeToDisappearingConversationMode(
function changeToDisappearingConversationMode(
convo: ConversationModel,
expirationType?: DisappearingMessageType,
expireTimer?: number
@ -273,7 +273,7 @@ export function changeToDisappearingConversationMode(
}
// TODO legacy messages support will be removed in a future release
export async function checkForExpireUpdateInContentMessage(
async function checkForExpireUpdateInContentMessage(
content: SignalService.Content,
convoToUpdate: ConversationModel,
isOutgoing?: boolean
@ -415,7 +415,7 @@ export async function checkForExpireUpdateInContentMessage(
/**
* Checks if an outgoing message is meant to disappear and if so trigger the timer
*/
export function checkForExpiringOutgoingMessage(message: MessageModel, location?: string) {
function checkForExpiringOutgoingMessage(message: MessageModel, location?: string) {
const convo = message.getConversation();
const expireTimer = message.getExpireTimer();
const expirationType = message.getExpirationType();
@ -441,7 +441,7 @@ export function checkForExpiringOutgoingMessage(message: MessageModel, location?
}
// TODO legacy messages support will be removed in a future release
export function getMessageReadyToDisappear(
function getMessageReadyToDisappear(
conversationModel: ConversationModel,
messageModel: MessageModel,
expireUpdate?: DisappearingMessageUpdate
@ -495,7 +495,7 @@ export function getMessageReadyToDisappear(
return messageModel;
}
export async function checkHasOutdatedDisappearingMessageClient(
async function checkHasOutdatedDisappearingMessageClient(
convoToUpdate: ConversationModel,
sender: ConversationModel,
expireUpdate: DisappearingMessageUpdate
@ -533,7 +533,7 @@ export async function checkHasOutdatedDisappearingMessageClient(
}
}
export async function updateMessageExpiryOnSwarm(
async function updateMessageExpiryOnSwarm(
message: MessageModel,
callLocation?: string, // this is for debugging purposes
shouldCommit?: boolean
@ -588,3 +588,17 @@ export async function updateMessageExpiryOnSwarm(
return message;
}
export const DisappearingMessages = {
destroyMessagesAndUpdateRedux,
initExpiringMessageListener,
updateExpiringMessagesCheck,
setExpirationStartTimestamp,
changeToDisappearingMessageType,
changeToDisappearingConversationMode,
checkForExpireUpdateInContentMessage,
checkForExpiringOutgoingMessage,
getMessageReadyToDisappear,
checkHasOutdatedDisappearingMessageClient,
updateMessageExpiryOnSwarm,
};

@ -17,10 +17,7 @@ import { SnodeNamespaces } from '../apis/snode_api/namespaces';
import { getConversationController } from '../conversations';
import { generateCurve25519KeyPairWithoutPrefix } from '../crypto';
import { encryptUsingSessionProtocol } from '../crypto/MessageEncrypter';
import {
changeToDisappearingMessageType,
setExpirationStartTimestamp,
} from '../disappearing_messages';
import { DisappearingMessages } from '../disappearing_messages';
import { DisappearAfterSendOnly } from '../disappearing_messages/types';
import { ClosedGroupAddedMembersMessage } from '../messages/outgoing/controlMessage/group/ClosedGroupAddedMembersMessage';
import { ClosedGroupEncryptionPairMessage } from '../messages/outgoing/controlMessage/group/ClosedGroupEncryptionPairMessage';
@ -72,7 +69,7 @@ export async function initiateClosedGroupUpdate(
isGroupV3 ? ConversationTypeEnum.GROUPV3 : ConversationTypeEnum.GROUP
);
const expirationType = changeToDisappearingMessageType(
const expirationType = DisappearingMessages.changeToDisappearingMessageType(
convo,
convo.getExpireTimer(),
convo.getExpirationMode()
@ -181,13 +178,13 @@ export async function addUpdateMessage(
if (convo && expirationMode && expireTimer > 0) {
expirationType =
expirationMode !== 'off'
? changeToDisappearingMessageType(convo, expireTimer, expirationMode)
? DisappearingMessages.changeToDisappearingMessageType(convo, expireTimer, expirationMode)
: undefined;
// NOTE Triggers disappearing for an incoming groupUpdate message
// TODO legacy messages support will be removed in a future release
if (expirationMode === 'legacy' || expirationMode === 'deleteAfterSend') {
expirationStartTimestamp = setExpirationStartTimestamp(
expirationStartTimestamp = DisappearingMessages.setExpirationStartTimestamp(
expirationMode,
sentAt,
'addUpdateMessage'
@ -339,7 +336,11 @@ async function sendAddedMembers(
members,
keypair: encryptionKeyPair,
identifier: messageId || uuidv4(),
expirationType: changeToDisappearingMessageType(convo, existingExpireTimer, expirationMode),
expirationType: DisappearingMessages.changeToDisappearingMessageType(
convo,
existingExpireTimer,
expirationMode
),
expireTimer: existingExpireTimer,
});

@ -26,10 +26,7 @@ import { SnodeAPIStore } from '../apis/snode_api/storeMessage';
import { getConversationController } from '../conversations';
import { MessageEncrypter } from '../crypto';
import { addMessagePadding } from '../crypto/BufferPadding';
import {
changeToDisappearingConversationMode,
updateMessageExpiryOnSwarm,
} from '../disappearing_messages';
import { DisappearingMessages } from '../disappearing_messages';
import { ContentMessage } from '../messages/outgoing';
import { ConfigurationMessage } from '../messages/outgoing/controlMessage/ConfigurationMessage';
import { SharedConfigMessage } from '../messages/outgoing/controlMessage/SharedConfigMessage';
@ -172,7 +169,7 @@ async function send(
// a message has started to disappear
foundMessage.getExpirationStartTimestamp()
) {
const expirationMode = changeToDisappearingConversationMode(
const expirationMode = DisappearingMessages.changeToDisappearingConversationMode(
convo,
expirationType,
expireTimer
@ -185,7 +182,7 @@ async function send(
canBeDeleteAfterRead &&
(expirationMode === 'legacy' || expirationMode === 'deleteAfterRead')
) {
await updateMessageExpiryOnSwarm(foundMessage, 'send()');
await DisappearingMessages.updateMessageExpiryOnSwarm(foundMessage, 'send()');
}
}

@ -2,7 +2,7 @@ import _ from 'lodash';
import { Data } from '../../data/data';
import { SignalService } from '../../protobuf';
import { PnServer } from '../apis/push_notification_api';
import { checkForExpiringOutgoingMessage } from '../disappearing_messages';
import { DisappearingMessages } from '../disappearing_messages';
import { OpenGroupVisibleMessage } from '../messages/outgoing/visibleMessage/OpenGroupVisibleMessage';
import { RawMessage } from '../types';
import { UserUtils } from '../utils';
@ -127,7 +127,7 @@ async function handleMessageSentSuccess(
sent_at: effectiveTimestamp,
});
checkForExpiringOutgoingMessage(fetchedMessage, 'handleMessageSentSuccess');
DisappearingMessages.checkForExpiringOutgoingMessage(fetchedMessage, 'handleMessageSentSuccess');
await fetchedMessage.commit();
fetchedMessage.getConversation()?.updateLastMessage();

@ -30,10 +30,7 @@ import { PnServer } from '../../apis/push_notification_api';
import { GetNetworkTime } from '../../apis/snode_api/getNetworkTime';
import { SnodeNamespaces } from '../../apis/snode_api/namespaces';
import { DURATION } from '../../constants';
import {
changeToDisappearingMessageType,
setExpirationStartTimestamp,
} from '../../disappearing_messages';
import { DisappearingMessages } from '../../disappearing_messages';
import { MessageSender } from '../../sending';
import { getIsRinging } from '../RingingManager';
import { getBlackSilenceMediaStream } from './Silence';
@ -521,10 +518,14 @@ export async function USER_callRecipient(recipient: string) {
if (calledConvo && expirationMode && expireTimer > 0) {
// TODO legacy messages support will be removed in a future release
expirationType = changeToDisappearingMessageType(calledConvo, expireTimer, expirationMode);
expirationType = DisappearingMessages.changeToDisappearingMessageType(
calledConvo,
expireTimer,
expirationMode
);
if (expirationMode === 'legacy' || expirationMode === 'deleteAfterSend') {
expirationStartTimestamp = setExpirationStartTimestamp(
expirationStartTimestamp = DisappearingMessages.setExpirationStartTimestamp(
expirationMode,
now,
'USER_callRecipient'
@ -906,10 +907,14 @@ export async function USER_acceptIncomingCallRequest(fromSender: string) {
if (callerConvo && expirationMode && expireTimer > 0) {
// TODO legacy messages support will be removed in a future release
expirationType = changeToDisappearingMessageType(callerConvo, expireTimer, expirationMode);
expirationType = DisappearingMessages.changeToDisappearingMessageType(
callerConvo,
expireTimer,
expirationMode
);
if (expirationMode === 'legacy' || expirationMode === 'deleteAfterSend') {
expirationStartTimestamp = setExpirationStartTimestamp(
expirationStartTimestamp = DisappearingMessages.setExpirationStartTimestamp(
expirationMode,
networkTimestamp,
'USER_acceptIncomingCallRequest'
@ -1263,14 +1268,14 @@ async function addMissedCallMessage(callerPubkey: string, sentAt: number) {
if (incomingCallConversation && expirationMode && expireTimer > 0) {
// TODO legacy messages support will be removed in a future release
expirationType = changeToDisappearingMessageType(
expirationType = DisappearingMessages.changeToDisappearingMessageType(
incomingCallConversation,
expireTimer,
expirationMode
);
if (expirationMode === 'legacy' || expirationMode === 'deleteAfterSend') {
expirationStartTimestamp = setExpirationStartTimestamp(
expirationStartTimestamp = DisappearingMessages.setExpirationStartTimestamp(
expirationMode,
sentAt,
'addMissedCallMessage'

@ -4,13 +4,7 @@ import Sinon from 'sinon';
import { ConversationModel } from '../../../../models/conversation';
import { ConversationTypeEnum } from '../../../../models/conversationAttributes';
import { GetNetworkTime } from '../../../../session/apis/snode_api/getNetworkTime';
import {
changeToDisappearingConversationMode,
changeToDisappearingMessageType,
checkForExpireUpdateInContentMessage,
checkForExpiringOutgoingMessage,
setExpirationStartTimestamp,
} from '../../../../session/disappearing_messages';
import { DisappearingMessages } from '../../../../session/disappearing_messages';
import {
DisappearingMessageConversationModeType,
DisappearingMessageType,
@ -54,7 +48,7 @@ describe('DisappearingMessage', () => {
describe('setExpirationStartTimestamp', () => {
it('returns a valid unix timestamp for deleteAfterRead', async () => {
const mode: DisappearingMessageConversationModeType = 'deleteAfterRead';
const expirationStartTimestamp = setExpirationStartTimestamp(mode);
const expirationStartTimestamp = DisappearingMessages.setExpirationStartTimestamp(mode);
expect(expirationStartTimestamp, 'it should return a number').to.be.is.a('number');
expect(isValidUnixTimestamp(expirationStartTimestamp!), 'it should be a valid unix timestamp')
@ -62,7 +56,7 @@ describe('DisappearingMessage', () => {
});
it('returns a valid unix timestamp for deleteAfterSend', async () => {
const mode: DisappearingMessageConversationModeType = 'deleteAfterSend';
const expirationStartTimestamp = setExpirationStartTimestamp(mode);
const expirationStartTimestamp = DisappearingMessages.setExpirationStartTimestamp(mode);
expect(expirationStartTimestamp, 'it should return a number').to.be.is.a('number');
expect(isValidUnixTimestamp(expirationStartTimestamp!), 'it should be a valid unix timestamp')
@ -70,14 +64,17 @@ describe('DisappearingMessage', () => {
});
it('returns undefined when disappearing messages is off', async () => {
const mode: DisappearingMessageConversationModeType = 'off';
const expirationStartTimestamp = setExpirationStartTimestamp(mode);
const expirationStartTimestamp = DisappearingMessages.setExpirationStartTimestamp(mode);
expect(expirationStartTimestamp, 'it should return undefined').to.be.undefined;
});
it('if we give it a timestamp it returns the older timestamp for deleteAfterRead', async () => {
const mode: DisappearingMessageConversationModeType = 'deleteAfterRead';
const timestamp = new Date().valueOf();
const expirationStartTimestamp = setExpirationStartTimestamp(mode, timestamp);
const expirationStartTimestamp = DisappearingMessages.setExpirationStartTimestamp(
mode,
timestamp
);
expect(expirationStartTimestamp, 'it should return a number').to.be.is.a('number');
expect(isValidUnixTimestamp(expirationStartTimestamp!), 'it should be a valid unix timestamp')
@ -90,7 +87,10 @@ describe('DisappearingMessage', () => {
it('if we give it a timestamp it returns the older timestamp for deleteAfterSend', async () => {
const mode: DisappearingMessageConversationModeType = 'deleteAfterSend';
const timestamp = new Date().valueOf();
const expirationStartTimestamp = setExpirationStartTimestamp(mode, timestamp);
const expirationStartTimestamp = DisappearingMessages.setExpirationStartTimestamp(
mode,
timestamp
);
expect(expirationStartTimestamp, 'it should return a number').to.be.is.a('number');
expect(isValidUnixTimestamp(expirationStartTimestamp!), 'it should be a valid unix timestamp')
@ -103,7 +103,10 @@ describe('DisappearingMessage', () => {
it('if we give it an invalid timestamp it returns undefined', async () => {
const mode: DisappearingMessageConversationModeType = 'deleteAfterSend';
const timestamp = -1;
const expirationStartTimestamp = setExpirationStartTimestamp(mode, timestamp);
const expirationStartTimestamp = DisappearingMessages.setExpirationStartTimestamp(
mode,
timestamp
);
expect(expirationStartTimestamp, 'it should return undefined').to.be.undefined;
});
@ -116,7 +119,7 @@ describe('DisappearingMessage', () => {
} as any);
const expireTimer = 0; // seconds
const expirationMode = 'off';
const messageExpirationType = changeToDisappearingMessageType(
const messageExpirationType = DisappearingMessages.changeToDisappearingMessageType(
conversation,
expireTimer,
expirationMode
@ -130,7 +133,7 @@ describe('DisappearingMessage', () => {
} as any);
const expireTimer = 60; // seconds
const expirationMode = 'deleteAfterRead';
const messageExpirationType = changeToDisappearingMessageType(
const messageExpirationType = DisappearingMessages.changeToDisappearingMessageType(
conversation,
expireTimer,
expirationMode
@ -144,7 +147,7 @@ describe('DisappearingMessage', () => {
} as any);
const expireTimer = 60; // seconds
const expirationMode = 'deleteAfterSend';
const messageExpirationType = changeToDisappearingMessageType(
const messageExpirationType = DisappearingMessages.changeToDisappearingMessageType(
conversation,
expireTimer,
expirationMode
@ -159,7 +162,7 @@ describe('DisappearingMessage', () => {
} as any);
const expireTimer = 60; // seconds
const expirationMode = 'deleteAfterRead'; // not correct
const messageExpirationType = changeToDisappearingMessageType(
const messageExpirationType = DisappearingMessages.changeToDisappearingMessageType(
ourConversation,
expireTimer,
expirationMode
@ -176,7 +179,7 @@ describe('DisappearingMessage', () => {
} as any);
const expireTimer = 60; // seconds
const expirationMode = 'deleteAfterRead'; // not correct
const messageExpirationType = changeToDisappearingMessageType(
const messageExpirationType = DisappearingMessages.changeToDisappearingMessageType(
ourConversation,
expireTimer,
expirationMode
@ -191,7 +194,7 @@ describe('DisappearingMessage', () => {
} as any);
const expireTimer = 0; // seconds
const expirationMode = 'legacy';
const messageExpirationType = changeToDisappearingMessageType(
const messageExpirationType = DisappearingMessages.changeToDisappearingMessageType(
conversation,
expireTimer,
expirationMode
@ -204,7 +207,10 @@ describe('DisappearingMessage', () => {
...conversationArgs,
} as any);
const expireTimer = 0; // seconds
const messageExpirationType = changeToDisappearingMessageType(conversation, expireTimer);
const messageExpirationType = DisappearingMessages.changeToDisappearingMessageType(
conversation,
expireTimer
);
expect(messageExpirationType, 'returns unknown').to.be.eq('unknown');
});
@ -218,7 +224,7 @@ describe('DisappearingMessage', () => {
} as any);
const expirationType = 'deleteAfterRead'; // not correct
const expireTimer = 60; // seconds
const conversationMode = changeToDisappearingConversationMode(
const conversationMode = DisappearingMessages.changeToDisappearingConversationMode(
ourConversation,
expirationType,
expireTimer
@ -235,7 +241,7 @@ describe('DisappearingMessage', () => {
} as any);
const expirationType = 'deleteAfterRead'; // not correct
const expireTimer = 60; // seconds
const conversationMode = changeToDisappearingConversationMode(
const conversationMode = DisappearingMessages.changeToDisappearingConversationMode(
ourConversation,
expirationType,
expireTimer
@ -249,7 +255,7 @@ describe('DisappearingMessage', () => {
} as any);
const expirationType = 'deleteAfterRead';
const expireTimer = 60; // seconds
const conversationMode = changeToDisappearingConversationMode(
const conversationMode = DisappearingMessages.changeToDisappearingConversationMode(
ourConversation,
expirationType,
expireTimer
@ -263,7 +269,7 @@ describe('DisappearingMessage', () => {
} as any);
const expirationType = 'deleteAfterSend';
const expireTimer = 60; // seconds
const conversationMode = changeToDisappearingConversationMode(
const conversationMode = DisappearingMessages.changeToDisappearingConversationMode(
ourConversation,
expirationType,
expireTimer
@ -275,7 +281,7 @@ describe('DisappearingMessage', () => {
const conversation = new ConversationModel({ ...conversationArgs } as any);
const expirationType: DisappearingMessageType = 'unknown';
const expireTimer = 0; // seconds
const conversationMode = changeToDisappearingConversationMode(
const conversationMode = DisappearingMessages.changeToDisappearingConversationMode(
conversation,
expirationType,
expireTimer
@ -286,7 +292,7 @@ describe('DisappearingMessage', () => {
it('if the type is undefined and expireTimer = 0 then the conversation mode is off', async () => {
const conversation = new ConversationModel({ ...conversationArgs } as any);
const expireTimer = 0; // seconds
const conversationMode = changeToDisappearingConversationMode(
const conversationMode = DisappearingMessages.changeToDisappearingConversationMode(
conversation,
undefined,
expireTimer
@ -296,7 +302,9 @@ describe('DisappearingMessage', () => {
});
it('if the type and expireTimer are undefined then the conversation mode is off', async () => {
const conversation = new ConversationModel({ ...conversationArgs } as any);
const conversationMode = changeToDisappearingConversationMode(conversation);
const conversationMode = DisappearingMessages.changeToDisappearingConversationMode(
conversation
);
expect(conversationMode, 'returns off').to.be.eq('off');
});
@ -305,7 +313,7 @@ describe('DisappearingMessage', () => {
const conversation = new ConversationModel({ ...conversationArgs } as any);
const expirationType: DisappearingMessageType = 'unknown';
const expireTimer = 60; // seconds
const conversationMode = changeToDisappearingConversationMode(
const conversationMode = DisappearingMessages.changeToDisappearingConversationMode(
conversation,
expirationType,
expireTimer
@ -316,7 +324,7 @@ describe('DisappearingMessage', () => {
it('if the type is undefined and expireTimer > 0 then the conversation mode is legacy', async () => {
const conversation = new ConversationModel({ ...conversationArgs } as any);
const expireTimer = 60; // seconds
const conversationMode = changeToDisappearingConversationMode(
const conversationMode = DisappearingMessages.changeToDisappearingConversationMode(
conversation,
undefined,
expireTimer
@ -335,7 +343,7 @@ describe('DisappearingMessage', () => {
// TODO legacy messages support will be removed in a future release
Sinon.stub(ReleasedFeatures, 'checkIsDisappearMessageV2FeatureReleased').resolves(true);
const expireUpdate = await checkForExpireUpdateInContentMessage(
const expireUpdate = await DisappearingMessages.checkForExpireUpdateInContentMessage(
visibleMessage.contentProto(),
convoToUpdate,
true
@ -366,7 +374,7 @@ describe('DisappearingMessage', () => {
// TODO legacy messages support will be removed in a future release
Sinon.stub(ReleasedFeatures, 'checkIsDisappearMessageV2FeatureReleased').resolves(true);
const expireUpdate = await checkForExpireUpdateInContentMessage(
const expireUpdate = await DisappearingMessages.checkForExpireUpdateInContentMessage(
disappearingMessage.contentProto(),
convoToUpdate,
true
@ -406,7 +414,7 @@ describe('DisappearingMessage', () => {
// TODO legacy messages support will be removed in a future release
Sinon.stub(ReleasedFeatures, 'checkIsDisappearMessageV2FeatureReleased').resolves(true);
const expireUpdate = await checkForExpireUpdateInContentMessage(
const expireUpdate = await DisappearingMessages.checkForExpireUpdateInContentMessage(
expirationTimerUpdateMessage.contentProto(),
convoToUpdate,
true
@ -447,7 +455,7 @@ describe('DisappearingMessage', () => {
// TODO legacy messages support will be removed in a future release
Sinon.stub(ReleasedFeatures, 'checkIsDisappearMessageV2FeatureReleased').resolves(true);
const expireUpdate = await checkForExpireUpdateInContentMessage(
const expireUpdate = await DisappearingMessages.checkForExpireUpdateInContentMessage(
expirationTimerUpdateMessage.contentProto(),
convoToUpdate,
true
@ -485,7 +493,7 @@ describe('DisappearingMessage', () => {
});
Sinon.stub(message, 'getConversation').returns(conversation);
checkForExpiringOutgoingMessage(message, 'unit tests');
DisappearingMessages.checkForExpiringOutgoingMessage(message, 'unit tests');
expect(message.getExpirationStartTimestamp(), 'it should be defined').to.not.be.undefined;
expect(
@ -508,7 +516,7 @@ describe('DisappearingMessage', () => {
});
Sinon.stub(message, 'getConversation').returns(conversation);
checkForExpiringOutgoingMessage(message, 'unit tests');
DisappearingMessages.checkForExpiringOutgoingMessage(message, 'unit tests');
expect(message.getExpirationStartTimestamp(), 'it should be undefined').to.be.undefined;
});
@ -524,7 +532,7 @@ describe('DisappearingMessage', () => {
});
Sinon.stub(message, 'getConversation').returns(conversation);
checkForExpiringOutgoingMessage(message, 'unit tests');
DisappearingMessages.checkForExpiringOutgoingMessage(message, 'unit tests');
expect(message.getExpirationStartTimestamp(), 'it should be undefined').to.be.undefined;
});
@ -543,7 +551,7 @@ describe('DisappearingMessage', () => {
});
Sinon.stub(message, 'getConversation').returns(conversation);
checkForExpiringOutgoingMessage(message, 'unit tests');
DisappearingMessages.checkForExpiringOutgoingMessage(message, 'unit tests');
expect(message.getExpirationStartTimestamp(), 'it should be defined').to.not.be.undefined;
expect(

Loading…
Cancel
Save