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 { 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,

View file

@ -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<CallbackResultType> {
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,
});

View file

@ -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;

View file

@ -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',
});