Adjust story replies for direct conversations
This commit is contained in:
parent
fa7b7fcd08
commit
0ca66d6e95
19 changed files with 490 additions and 131 deletions
|
@ -4,11 +4,12 @@
|
|||
/* eslint-disable max-classes-per-file */
|
||||
|
||||
import { Collection, Model } from 'backbone';
|
||||
import type { MessageModel } from '../models/messages';
|
||||
import { getContactId, getContact } from '../messages/helpers';
|
||||
import { isOutgoing } from '../state/selectors/message';
|
||||
import type { ReactionAttributesType } from '../model-types.d';
|
||||
import * as log from '../logging/log';
|
||||
import type { MessageModel } from '../models/messages';
|
||||
import type { ReactionAttributesType } from '../model-types.d';
|
||||
import { getContactId, getContact } from '../messages/helpers';
|
||||
import { isDirectConversation } from '../util/whatTypeOfConversation';
|
||||
import { isOutgoing, isStory } from '../state/selectors/message';
|
||||
|
||||
export class ReactionModel extends Model<ReactionAttributesType> {}
|
||||
|
||||
|
@ -55,7 +56,10 @@ export class Reactions extends Collection<ReactionModel> {
|
|||
return [];
|
||||
}
|
||||
|
||||
async onReaction(reaction: ReactionModel): Promise<void> {
|
||||
async onReaction(
|
||||
reaction: ReactionModel,
|
||||
generatedMessage: MessageModel
|
||||
): Promise<void> {
|
||||
try {
|
||||
// The conversation the target message was in; we have to find it in the database
|
||||
// to to figure that out.
|
||||
|
@ -133,6 +137,35 @@ export class Reactions extends Collection<ReactionModel> {
|
|||
targetMessage
|
||||
);
|
||||
|
||||
// Use the generated message in ts/background.ts to create a message
|
||||
// if the reaction is targetted at a story on a 1:1 conversation.
|
||||
if (
|
||||
isStory(targetMessage) &&
|
||||
isDirectConversation(targetConversation.attributes)
|
||||
) {
|
||||
generatedMessage.set({
|
||||
storyId: targetMessage.id,
|
||||
storyReactionEmoji: reaction.get('emoji'),
|
||||
});
|
||||
|
||||
await Promise.all([
|
||||
window.Signal.Data.saveMessage(generatedMessage.attributes, {
|
||||
ourUuid: window.textsecure.storage.user
|
||||
.getCheckedUuid()
|
||||
.toString(),
|
||||
forceSave: true,
|
||||
}),
|
||||
generatedMessage.hydrateStoryContext(message),
|
||||
]);
|
||||
|
||||
targetConversation.addSingleMessage(
|
||||
window.MessageController.register(
|
||||
generatedMessage.id,
|
||||
generatedMessage
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
await message.handleReaction(reaction);
|
||||
|
||||
this.remove(reaction);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue