Remove notification on reaction remove/change
This commit is contained in:
parent
c4dc3f3bcb
commit
18fb2b806e
2 changed files with 58 additions and 11 deletions
|
@ -3642,6 +3642,12 @@ export class MessageModel extends window.Backbone.Model<MessageAttributesType> {
|
|||
const messageId = this.idForLogging();
|
||||
const count = reactions.length;
|
||||
|
||||
const conversation = window.ConversationController.get(
|
||||
this.get('conversationId')
|
||||
);
|
||||
|
||||
let staleReactionFromId: string | undefined;
|
||||
|
||||
if (reaction.get('remove')) {
|
||||
window.log.info('Removing reaction for message', messageId);
|
||||
const newReactions = reactions.filter(
|
||||
|
@ -3650,6 +3656,8 @@ export class MessageModel extends window.Backbone.Model<MessageAttributesType> {
|
|||
re.fromId !== reaction.get('fromId')
|
||||
);
|
||||
this.set({ reactions: newReactions });
|
||||
|
||||
staleReactionFromId = reaction.get('fromId');
|
||||
} else {
|
||||
window.log.info('Adding reaction for message', messageId);
|
||||
const newReactions = reactions.filter(
|
||||
|
@ -3658,9 +3666,12 @@ export class MessageModel extends window.Backbone.Model<MessageAttributesType> {
|
|||
newReactions.push(reaction.toJSON());
|
||||
this.set({ reactions: newReactions });
|
||||
|
||||
const conversation = window.ConversationController.get(
|
||||
this.get('conversationId')
|
||||
const oldReaction = reactions.find(
|
||||
re => re.fromId === reaction.get('fromId')
|
||||
);
|
||||
if (oldReaction) {
|
||||
staleReactionFromId = oldReaction.fromId;
|
||||
}
|
||||
|
||||
// Only notify for reactions to our own messages
|
||||
if (conversation && this.isOutgoing() && !reaction.get('fromSync')) {
|
||||
|
@ -3668,6 +3679,10 @@ export class MessageModel extends window.Backbone.Model<MessageAttributesType> {
|
|||
}
|
||||
}
|
||||
|
||||
if (staleReactionFromId) {
|
||||
this.clearNotifications(reaction.get('fromId'));
|
||||
}
|
||||
|
||||
const newCount = this.get('reactions').length;
|
||||
window.log.info(
|
||||
`Done processing reaction for message ${messageId}. Went from ${count} to ${newCount} reactions.`
|
||||
|
@ -3704,6 +3719,13 @@ export class MessageModel extends window.Backbone.Model<MessageAttributesType> {
|
|||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
this.getConversation()!.updateLastMessage();
|
||||
}
|
||||
|
||||
clearNotifications(reactionFromId?: string): void {
|
||||
window.Whisper.Notifications.removeBy({
|
||||
messageId: this.id,
|
||||
reactionFromId,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
window.Whisper.Message = MessageModel as typeof window.WhatIsThis;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue