Include story=true when deleting your story for everyone
This commit is contained in:
parent
ca6c992528
commit
5dea03f713
4 changed files with 26 additions and 5 deletions
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
});
|
});
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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',
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue