Include story=true when deleting your story for everyone

This commit is contained in:
Scott Nonnenberg 2022-10-20 15:10:10 -07:00 committed by GitHub
parent ca6c992528
commit 5dea03f713
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 26 additions and 5 deletions

View file

@ -34,6 +34,7 @@ import type { MessageModel } from '../../models/messages';
import { SendMessageProtoError } from '../../textsecure/Errors'; import { SendMessageProtoError } from '../../textsecure/Errors';
import { strictAssert } from '../../util/assert'; import { strictAssert } from '../../util/assert';
import type { LoggerType } from '../../types/Logging'; import type { LoggerType } from '../../types/Logging';
import { isStory } from '../../messages/helpers';
export async function sendDeleteForEveryone( export async function sendDeleteForEveryone(
conversation: ConversationModel, conversation: ConversationModel,
@ -59,6 +60,7 @@ export async function sendDeleteForEveryone(
log.error(`Failed to fetch message ${messageId}. Failing job.`); log.error(`Failed to fetch message ${messageId}. Failing job.`);
return; return;
} }
const story = isStory(message.attributes);
if (!shouldContinue) { if (!shouldContinue) {
log.info('Ran out of time. Giving up on sending delete for everyone'); 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(); profileKey = await ourProfileKeyService.get();
} }
const sendOptions = await getSendOptions(conversation.attributes); const sendOptions = await getSendOptions(conversation.attributes, {
story,
});
try { try {
if (isMe(conversation.attributes)) { if (isMe(conversation.attributes)) {
@ -188,6 +192,7 @@ export async function sendDeleteForEveryone(
profileKey, profileKey,
options: sendOptions, options: sendOptions,
urgent: true, urgent: true,
story,
includePniSignatureMessage: true, includePniSignatureMessage: true,
}), }),
sendType, sendType,
@ -226,6 +231,7 @@ export async function sendDeleteForEveryone(
sendOptions, sendOptions,
sendTarget: conversation.toSenderKeyTarget(), sendTarget: conversation.toSenderKeyTarget(),
sendType: 'deleteForEveryone', sendType: 'deleteForEveryone',
story,
urgent: true, urgent: true,
}), }),
sendType, sendType,

View file

@ -1161,6 +1161,7 @@ export default class MessageSender {
groupId, groupId,
options, options,
urgent, urgent,
story,
includePniSignatureMessage, includePniSignatureMessage,
}: Readonly<{ }: Readonly<{
messageOptions: MessageOptionsType; messageOptions: MessageOptionsType;
@ -1168,6 +1169,7 @@ export default class MessageSender {
groupId: string | undefined; groupId: string | undefined;
options?: SendOptionsType; options?: SendOptionsType;
urgent: boolean; urgent: boolean;
story?: boolean;
includePniSignatureMessage?: boolean; includePniSignatureMessage?: boolean;
}>): Promise<CallbackResultType> { }>): Promise<CallbackResultType> {
const proto = await this.getContentMessage({ const proto = await this.getContentMessage({
@ -1191,6 +1193,7 @@ export default class MessageSender {
recipients: messageOptions.recipients || [], recipients: messageOptions.recipients || [],
timestamp: messageOptions.timestamp, timestamp: messageOptions.timestamp,
urgent, urgent,
story,
}); });
}); });
} }
@ -1346,6 +1349,7 @@ export default class MessageSender {
reaction, reaction,
sticker, sticker,
storyContext, storyContext,
story,
timestamp, timestamp,
urgent, urgent,
includePniSignatureMessage, includePniSignatureMessage,
@ -1365,6 +1369,7 @@ export default class MessageSender {
reaction?: ReactionType; reaction?: ReactionType;
sticker?: StickerWithHydratedData; sticker?: StickerWithHydratedData;
storyContext?: StoryContextType; storyContext?: StoryContextType;
story?: boolean;
timestamp: number; timestamp: number;
urgent: boolean; urgent: boolean;
includePniSignatureMessage?: boolean; includePniSignatureMessage?: boolean;
@ -1388,6 +1393,7 @@ export default class MessageSender {
contentHint, contentHint,
groupId, groupId,
options, options,
story,
urgent, urgent,
includePniSignatureMessage, includePniSignatureMessage,
}); });

View file

@ -12,7 +12,10 @@ import {
conversationQueueJobEnum, conversationQueueJobEnum,
} from '../jobs/conversationJobQueue'; } from '../jobs/conversationJobQueue';
import { deleteForEveryone } from './deleteForEveryone'; import { deleteForEveryone } from './deleteForEveryone';
import { getConversationIdForLogging } from './idForLogging'; import {
getConversationIdForLogging,
getMessageIdForLogging,
} from './idForLogging';
import { getMessageById } from '../messages/getMessageById'; import { getMessageById } from '../messages/getMessageById';
import { getRecipientConversationIds } from './getRecipientConversationIds'; import { getRecipientConversationIds } from './getRecipientConversationIds';
import { getRecipients } from './getRecipients'; import { getRecipients } from './getRecipients';
@ -38,6 +41,7 @@ export async function sendDeleteForEveryoneMessage(
throw new Error('sendDeleteForEveryoneMessage: Cannot find message!'); throw new Error('sendDeleteForEveryoneMessage: Cannot find message!');
} }
const messageModel = window.MessageController.register(messageId, message); const messageModel = window.MessageController.register(messageId, message);
const idForLogging = getMessageIdForLogging(messageModel.attributes);
const timestamp = Date.now(); const timestamp = Date.now();
const maxDuration = deleteForEveryoneDuration || THREE_HOURS; const maxDuration = deleteForEveryoneDuration || THREE_HOURS;
@ -62,9 +66,12 @@ export async function sendDeleteForEveryoneMessage(
targetTimestamp, targetTimestamp,
}; };
await conversationJobQueue.add(jobData, async jobToInsert => { await conversationJobQueue.add(jobData, async jobToInsert => {
const idForLogging = getConversationIdForLogging(conversationAttributes); const conversationIdForLogging = getConversationIdForLogging(
conversationAttributes
);
log.info( 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, { await window.Signal.Data.saveMessage(messageModel.attributes, {
jobToInsert, jobToInsert,
@ -73,7 +80,7 @@ export async function sendDeleteForEveryoneMessage(
}); });
} catch (error) { } catch (error) {
log.error( log.error(
'sendDeleteForEveryoneMessage: Failed to queue delete for everyone', `sendDeleteForEveryoneMessage: Failed to queue delete for everyone for message ${idForLogging}`,
Errors.toLogFormat(error) Errors.toLogFormat(error)
); );
throw error; throw error;

View file

@ -167,6 +167,7 @@ export async function sendStoryMessage(
sent_at: timestamp, sent_at: timestamp,
source: window.textsecure.storage.user.getNumber(), source: window.textsecure.storage.user.getNumber(),
sourceUuid: window.textsecure.storage.user.getUuid()?.toString(), sourceUuid: window.textsecure.storage.user.getUuid()?.toString(),
sourceDevice: window.textsecure.storage.user.getDeviceId(),
storyDistributionListId: distributionList.id, storyDistributionListId: distributionList.id,
timestamp, timestamp,
type: 'story', type: 'story',
@ -249,6 +250,7 @@ export async function sendStoryMessage(
sent_at: groupTimestamp, sent_at: groupTimestamp,
source: window.textsecure.storage.user.getNumber(), source: window.textsecure.storage.user.getNumber(),
sourceUuid: window.textsecure.storage.user.getUuid()?.toString(), sourceUuid: window.textsecure.storage.user.getUuid()?.toString(),
sourceDevice: window.textsecure.storage.user.getDeviceId(),
timestamp: groupTimestamp, timestamp: groupTimestamp,
type: 'story', type: 'story',
}); });