From 5dea03f7134694df98e46333b36be4ca7ad71ce3 Mon Sep 17 00:00:00 2001 From: Scott Nonnenberg Date: Thu, 20 Oct 2022 15:10:10 -0700 Subject: [PATCH] Include story=true when deleting your story for everyone --- ts/jobs/helpers/sendDeleteForEveryone.ts | 8 +++++++- ts/textsecure/SendMessage.ts | 6 ++++++ ts/util/sendDeleteForEveryoneMessage.ts | 15 +++++++++++---- ts/util/sendStoryMessage.ts | 2 ++ 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/ts/jobs/helpers/sendDeleteForEveryone.ts b/ts/jobs/helpers/sendDeleteForEveryone.ts index c0378ef54..dc5f84adf 100644 --- a/ts/jobs/helpers/sendDeleteForEveryone.ts +++ b/ts/jobs/helpers/sendDeleteForEveryone.ts @@ -34,6 +34,7 @@ import type { MessageModel } from '../../models/messages'; import { SendMessageProtoError } from '../../textsecure/Errors'; import { strictAssert } from '../../util/assert'; import type { LoggerType } from '../../types/Logging'; +import { isStory } from '../../messages/helpers'; export async function sendDeleteForEveryone( conversation: ConversationModel, @@ -59,6 +60,7 @@ export async function sendDeleteForEveryone( log.error(`Failed to fetch message ${messageId}. Failing job.`); return; } + const story = isStory(message.attributes); if (!shouldContinue) { log.info('Ran out of time. Giving up on sending delete for everyone'); @@ -105,7 +107,9 @@ export async function sendDeleteForEveryone( profileKey = await ourProfileKeyService.get(); } - const sendOptions = await getSendOptions(conversation.attributes); + const sendOptions = await getSendOptions(conversation.attributes, { + story, + }); try { if (isMe(conversation.attributes)) { @@ -188,6 +192,7 @@ export async function sendDeleteForEveryone( profileKey, options: sendOptions, urgent: true, + story, includePniSignatureMessage: true, }), sendType, @@ -226,6 +231,7 @@ export async function sendDeleteForEveryone( sendOptions, sendTarget: conversation.toSenderKeyTarget(), sendType: 'deleteForEveryone', + story, urgent: true, }), sendType, diff --git a/ts/textsecure/SendMessage.ts b/ts/textsecure/SendMessage.ts index 18e09650f..d4fd566e9 100644 --- a/ts/textsecure/SendMessage.ts +++ b/ts/textsecure/SendMessage.ts @@ -1161,6 +1161,7 @@ export default class MessageSender { groupId, options, urgent, + story, includePniSignatureMessage, }: Readonly<{ messageOptions: MessageOptionsType; @@ -1168,6 +1169,7 @@ export default class MessageSender { groupId: string | undefined; options?: SendOptionsType; urgent: boolean; + story?: boolean; includePniSignatureMessage?: boolean; }>): Promise { const proto = await this.getContentMessage({ @@ -1191,6 +1193,7 @@ export default class MessageSender { recipients: messageOptions.recipients || [], timestamp: messageOptions.timestamp, urgent, + story, }); }); } @@ -1346,6 +1349,7 @@ export default class MessageSender { reaction, sticker, storyContext, + story, timestamp, urgent, includePniSignatureMessage, @@ -1365,6 +1369,7 @@ export default class MessageSender { reaction?: ReactionType; sticker?: StickerWithHydratedData; storyContext?: StoryContextType; + story?: boolean; timestamp: number; urgent: boolean; includePniSignatureMessage?: boolean; @@ -1388,6 +1393,7 @@ export default class MessageSender { contentHint, groupId, options, + story, urgent, includePniSignatureMessage, }); diff --git a/ts/util/sendDeleteForEveryoneMessage.ts b/ts/util/sendDeleteForEveryoneMessage.ts index d91d875b6..de20a9871 100644 --- a/ts/util/sendDeleteForEveryoneMessage.ts +++ b/ts/util/sendDeleteForEveryoneMessage.ts @@ -12,7 +12,10 @@ import { conversationQueueJobEnum, } from '../jobs/conversationJobQueue'; import { deleteForEveryone } from './deleteForEveryone'; -import { getConversationIdForLogging } from './idForLogging'; +import { + getConversationIdForLogging, + getMessageIdForLogging, +} from './idForLogging'; import { getMessageById } from '../messages/getMessageById'; import { getRecipientConversationIds } from './getRecipientConversationIds'; import { getRecipients } from './getRecipients'; @@ -38,6 +41,7 @@ export async function sendDeleteForEveryoneMessage( throw new Error('sendDeleteForEveryoneMessage: Cannot find message!'); } const messageModel = window.MessageController.register(messageId, message); + const idForLogging = getMessageIdForLogging(messageModel.attributes); const timestamp = Date.now(); const maxDuration = deleteForEveryoneDuration || THREE_HOURS; @@ -62,9 +66,12 @@ export async function sendDeleteForEveryoneMessage( targetTimestamp, }; await conversationJobQueue.add(jobData, async jobToInsert => { - const idForLogging = getConversationIdForLogging(conversationAttributes); + const conversationIdForLogging = getConversationIdForLogging( + conversationAttributes + ); log.info( - `sendDeleteForEveryoneMessage: saving message ${idForLogging} and job ${jobToInsert.id}` + `sendDeleteForEveryoneMessage: Deleting message ${idForLogging} ` + + `in conversation ${conversationIdForLogging} with job ${jobToInsert.id}` ); await window.Signal.Data.saveMessage(messageModel.attributes, { jobToInsert, @@ -73,7 +80,7 @@ export async function sendDeleteForEveryoneMessage( }); } catch (error) { log.error( - 'sendDeleteForEveryoneMessage: Failed to queue delete for everyone', + `sendDeleteForEveryoneMessage: Failed to queue delete for everyone for message ${idForLogging}`, Errors.toLogFormat(error) ); throw error; diff --git a/ts/util/sendStoryMessage.ts b/ts/util/sendStoryMessage.ts index 36d979eff..a6a672f33 100644 --- a/ts/util/sendStoryMessage.ts +++ b/ts/util/sendStoryMessage.ts @@ -167,6 +167,7 @@ export async function sendStoryMessage( sent_at: timestamp, source: window.textsecure.storage.user.getNumber(), sourceUuid: window.textsecure.storage.user.getUuid()?.toString(), + sourceDevice: window.textsecure.storage.user.getDeviceId(), storyDistributionListId: distributionList.id, timestamp, type: 'story', @@ -249,6 +250,7 @@ export async function sendStoryMessage( sent_at: groupTimestamp, source: window.textsecure.storage.user.getNumber(), sourceUuid: window.textsecure.storage.user.getUuid()?.toString(), + sourceDevice: window.textsecure.storage.user.getDeviceId(), timestamp: groupTimestamp, type: 'story', });