feat: fixed 1-1s and added more logging

pull/2971/head
William Grant 2 years ago
parent 6031db308d
commit bb6eb3e84e

@ -810,7 +810,7 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
shouldCommit = true, shouldCommit = true,
existingMessage, existingMessage,
}: { }: {
providedExpirationType: DisappearingMessageConversationType; providedExpirationType?: DisappearingMessageConversationType;
providedExpireTimer?: number; providedExpireTimer?: number;
providedChangeTimestamp: number; providedChangeTimestamp: number;
providedSource?: string; providedSource?: string;
@ -838,7 +838,11 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
if ( if (
this.get('lastDisappearingMessageChangeTimestamp') > lastDisappearingMessageChangeTimestamp this.get('lastDisappearingMessageChangeTimestamp') > lastDisappearingMessageChangeTimestamp
) { ) {
window.log.info('WIP: updateExpireTimer() This is an outdated disappearing message setting'); window.log.info(
'WIP: updateExpireTimer() This is an outdated disappearing message setting',
`fromConfigMessage = ${fromConfigMessage}`,
`fromSync: ${fromSync}`
);
return; return;
} }
@ -877,6 +881,7 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
let message: MessageModel | undefined = existingMessage || undefined; let message: MessageModel | undefined = existingMessage || undefined;
const messageExpirationType = changeToDisappearingMessageType(this, expirationType); const messageExpirationType = changeToDisappearingMessageType(this, expirationType);
window.log.debug(`WIP: updateExpireTimer() messageExpirationType: ${messageExpirationType}`);
// we don't have info about who made the change and when, when we get a change from a config message, so do not add a control message // we don't have info about who made the change and when, when we get a change from a config message, so do not add a control message
// TODO NOTE We might not show it in the UI but still need to process it using the senttimestamp as the lastchange timestamp for config messages // TODO NOTE We might not show it in the UI but still need to process it using the senttimestamp as the lastchange timestamp for config messages
@ -925,7 +930,7 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
} }
// if change was made remotely, don't send it to the contact/group // if change was made remotely, don't send it to the contact/group
if (receivedAt || fromSync || fromConfigMessage) { if (fromSync || fromConfigMessage) {
window.log.debug( window.log.debug(
`WIP: updateExpireTimer() Not sending an ExpireTimerUpdate message because the change was made remotely receivedAt:${receivedAt} fromSync:${fromSync} fromConfigMessage:${fromConfigMessage} ` `WIP: updateExpireTimer() Not sending an ExpireTimerUpdate message because the change was made remotely receivedAt:${receivedAt} fromSync:${fromSync} fromConfigMessage:${fromConfigMessage} `
); );
@ -948,17 +953,22 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
} }
const expirationTimerMessage = new ExpirationTimerUpdateMessage(expireUpdate); const expirationTimerMessage = new ExpirationTimerUpdateMessage(expireUpdate);
window.log.debug( window.log.debug(
`WIP: Sending ExpirationTimerUpdate message to Note to Self expirationTimerMessage:${JSON.stringify( `WIP: updateExpireTimer() isMe() expirationTimerMessage`,
expirationTimerMessage JSON.stringify(expirationTimerMessage)
)}`
); );
await message?.sendSyncMessageOnly(expirationTimerMessage); await message?.sendSyncMessageOnly(expirationTimerMessage);
return; return;
} }
if (this.isPrivate()) { if (this.isPrivate()) {
const expirationTimerMessage = new ExpirationTimerUpdateMessage(expireUpdate); const expirationTimerMessage = new ExpirationTimerUpdateMessage(expireUpdate);
window.log.debug(
`WIP: updateExpireTimer() isPrivate() expirationTimerMessage`,
JSON.stringify(expirationTimerMessage)
);
const pubkey = new PubKey(this.get('id')); const pubkey = new PubKey(this.get('id'));
await getMessageQueue().sendToPubKey( await getMessageQueue().sendToPubKey(
pubkey, pubkey,
@ -975,6 +985,11 @@ export class ConversationModel extends Backbone.Model<ConversationAttributes> {
const expirationTimerMessage = new ExpirationTimerUpdateMessage(expireUpdateForGroup); const expirationTimerMessage = new ExpirationTimerUpdateMessage(expireUpdateForGroup);
window.log.debug(
`WIP: updateExpireTimer() isClosedGroup() expirationTimerMessage`,
JSON.stringify(expirationTimerMessage)
);
await getMessageQueue().sendToGroup({ await getMessageQueue().sendToGroup({
message: expirationTimerMessage, message: expirationTimerMessage,
namespace: SnodeNamespaces.ClosedGroupMessage, namespace: SnodeNamespaces.ClosedGroupMessage,

@ -1126,6 +1126,7 @@ export class MessageModel extends Backbone.Model<MessageAttributes> {
} }
public markMessageReadNoCommit(readAt: number) { public markMessageReadNoCommit(readAt: number) {
window.log.debug(`WIP: markMessageReadNoCommit ${this.idForLogging()}`, this);
this.set({ unread: READ_MESSAGE_STATE.read }); this.set({ unread: READ_MESSAGE_STATE.read });
const convo = this.getConversation(); const convo = this.getConversation();
@ -1134,6 +1135,7 @@ export class MessageModel extends Backbone.Model<MessageAttributes> {
const expireTimer = this.get('expireTimer'); const expireTimer = this.get('expireTimer');
if (canBeDeleteAfterRead && expirationType && expireTimer > 0) { if (canBeDeleteAfterRead && expirationType && expireTimer > 0) {
window.log.debug(`WIP: markMessageReadNoCommit ${this.idForLogging()} is deleteAfterRead`);
const expirationMode = changeToDisappearingMessageConversationType( const expirationMode = changeToDisappearingMessageConversationType(
convo, convo,
expirationType, expirationType,

@ -386,8 +386,8 @@ async function handleContactsUpdate(result: IncomingConfResult): Promise<Incomin
wrapperConvo.expirationMode !== contactConvo.get('expirationType') wrapperConvo.expirationMode !== contactConvo.get('expirationType')
) { ) {
await contactConvo.updateExpireTimer({ await contactConvo.updateExpireTimer({
providedExpirationType: wrapperConvo.expirationMode || 'off', providedExpirationType: wrapperConvo.expirationMode,
providedExpireTimer: wrapperConvo.expirationTimerSeconds || 0, providedExpireTimer: wrapperConvo.expirationTimerSeconds,
providedChangeTimestamp: result.latestEnvelopeTimestamp, providedChangeTimestamp: result.latestEnvelopeTimestamp,
providedSource: wrapperConvo.id, providedSource: wrapperConvo.id,
shouldCommit: false, shouldCommit: false,

@ -193,6 +193,10 @@ function updateReadStatus(message: MessageModel) {
); );
if (expirationMode === 'legacy' || expirationMode === 'deleteAfterRead') { if (expirationMode === 'legacy' || expirationMode === 'deleteAfterRead') {
window.log.debug(
`WIP: updateReadStatus ${message.idForLogging()} is deleteAfterRead`,
message
);
message.set({ message.set({
expirationStartTimestamp: setExpirationStartTimestamp(expirationMode), expirationStartTimestamp: setExpirationStartTimestamp(expirationMode),
}); });

@ -148,6 +148,10 @@ async function handleMessageSentSuccess(
// NOTE we treat all outbound disappearing messages as read as soon as they are sent. // NOTE we treat all outbound disappearing messages as read as soon as they are sent.
if (expirationMode !== 'off') { if (expirationMode !== 'off') {
window.log.debug(
`WIP: handleMessageSentSuccess ${fetchedMessage.idForLogging()} is deleteAfterRead`,
fetchedMessage
);
fetchedMessage.set({ fetchedMessage.set({
expirationStartTimestamp: setExpirationStartTimestamp( expirationStartTimestamp: setExpirationStartTimestamp(
expirationMode, expirationMode,

@ -26,6 +26,7 @@ export type IncomingConfResult = {
needsDump: boolean; needsDump: boolean;
kind: SignalService.SharedConfigMessage.Kind; kind: SignalService.SharedConfigMessage.Kind;
publicKey: string; publicKey: string;
// NOTE this is the latest sent timestamp of the config message
latestEnvelopeTimestamp: number; latestEnvelopeTimestamp: number;
}; };

@ -391,17 +391,12 @@ export async function checkForExpireUpdateInContentMessage(
? Number(dataMessage.expireTimer) ? Number(dataMessage.expireTimer)
: content.expirationTimer; : content.expirationTimer;
// NOTE This starts are a DisappearingMessageConversationType but we will convert it to a DisappearingMessageType // NOTE This starts are a DisappearingMessageConversationType but we will convert it to a DisappearingMessageType for the final return
let expirationType: any = let expirationMode: any = changeToDisappearingMessageConversationType(
expirationTimer > 0 convoToUpdate,
? DisappearingMessageConversationSetting[ DisappearingMessageMode[content.expirationType],
!isDisappearingMessagesV2Released || isLegacyContentMessage expirationTimer
? changeToDisappearingMessageType(convoToUpdate) === 'deleteAfterRead' );
? 1
: 2
: content.expirationType
]
: DisappearingMessageConversationSetting[0];
const lastDisappearingMessageChangeTimestamp = content.lastDisappearingMessageChangeTimestamp const lastDisappearingMessageChangeTimestamp = content.lastDisappearingMessageChangeTimestamp
? Number(content.lastDisappearingMessageChangeTimestamp) ? Number(content.lastDisappearingMessageChangeTimestamp)
@ -410,7 +405,7 @@ export async function checkForExpireUpdateInContentMessage(
// TODO should review this // TODO should review this
const shouldDisappearButIsntMessage = const shouldDisappearButIsntMessage =
dataMessage.flags !== SignalService.DataMessage.Flags.EXPIRATION_TIMER_UPDATE && dataMessage.flags !== SignalService.DataMessage.Flags.EXPIRATION_TIMER_UPDATE &&
expirationType === 'off' && expirationMode === 'off' &&
expirationTimer === 0 && expirationTimer === 0 &&
convoToUpdate.get('expirationType') !== 'off' && convoToUpdate.get('expirationType') !== 'off' &&
convoToUpdate.get('expireTimer') !== 0; convoToUpdate.get('expireTimer') !== 0;
@ -423,15 +418,16 @@ export async function checkForExpireUpdateInContentMessage(
convoToUpdate.get('expirationType') !== 'off' convoToUpdate.get('expirationType') !== 'off'
) { ) {
if ( if (
expirationType !== convoToUpdate.get('expirationType') || expirationMode !== convoToUpdate.get('expirationType') ||
expirationTimer !== convoToUpdate.get('expireTimer') expirationTimer !== convoToUpdate.get('expireTimer')
) { ) {
window.log.debug( window.log.debug(
'WIP: Received a legacy disappearing message before v2 was released without values set. Using the conversation settings.', 'WIP: Received a legacy disappearing message before v2 was released without values set. Using the conversation settings.',
content content,
convoToUpdate
); );
expirationTimer = convoToUpdate.get('expireTimer'); expirationTimer = convoToUpdate.get('expireTimer');
expirationType = changeToDisappearingMessageType( expirationMode = changeToDisappearingMessageType(
convoToUpdate, convoToUpdate,
convoToUpdate.get('expirationType') convoToUpdate.get('expirationType')
); );
@ -443,19 +439,16 @@ export async function checkForExpireUpdateInContentMessage(
isDisappearingMessagesV2Released && isDisappearingMessagesV2Released &&
(isLegacyDataMessage || isLegacyConversationSettingMessage || shouldDisappearButIsntMessage) (isLegacyDataMessage || isLegacyConversationSettingMessage || shouldDisappearButIsntMessage)
) { ) {
window.log.warn( window.log.debug(
'Received a legacy disappearing message after v2 was released. Overriding it with the conversation settings', 'WIP: Received a legacy disappearing message after v2 was released. Overriding it with the conversation settings',
content content
); );
expirationTimer = convoToUpdate.get('expireTimer'); expirationTimer = convoToUpdate.get('expireTimer');
expirationType = changeToDisappearingMessageType( expirationMode = convoToUpdate.get('expirationType');
convoToUpdate,
convoToUpdate.get('expirationType')
);
} }
const expireUpdate: DisappearingMessageUpdate = { const expireUpdate: DisappearingMessageUpdate = {
expirationType, expirationType: changeToDisappearingMessageType(convoToUpdate, expirationMode),
expirationTimer, expirationTimer,
lastDisappearingMessageChangeTimestamp, lastDisappearingMessageChangeTimestamp,
isLegacyConversationSettingMessage, isLegacyConversationSettingMessage,

Loading…
Cancel
Save