From 43fa2edc1e6e0afa65724d47a95d47cd28c21d85 Mon Sep 17 00:00:00 2001 From: Jonathan Rainville Date: Fri, 11 Jun 2021 16:14:05 -0400 Subject: [PATCH] feat: add replies to activity center (#2257) --- VERSION | 2 +- protocol/activity_center.go | 21 ++++++++++++++------- protocol/messenger.go | 5 +++-- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/VERSION b/VERSION index 7b4c1a45f..d1be9c617 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.79.12 +0.79.13 diff --git a/protocol/activity_center.go b/protocol/activity_center.go index 257222b2c..67e6c8144 100644 --- a/protocol/activity_center.go +++ b/protocol/activity_center.go @@ -15,9 +15,11 @@ import ( type ActivityCenterType int const ( - ActivityCenterNotificationTypeNewOneToOne = iota + 1 + ActivityCenterNotificationNoType ActivityCenterType = iota + ActivityCenterNotificationTypeNewOneToOne ActivityCenterNotificationTypeNewPrivateGroupChat ActivityCenterNotificationTypeMention + ActivityCenterNotificationTypeReply ) var ErrInvalidActivityCenterNotification = errors.New("invalid activity center notification") @@ -48,14 +50,19 @@ func (n *ActivityCenterNotification) Valid() error { } -func showMentionActivityCenterNotification(publicKey ecdsa.PublicKey, message *common.Message, chat *Chat, responseTo *common.Message) bool { - if chat != nil && !chat.Active { - return false +func showMentionOrReplyActivityCenterNotification(publicKey ecdsa.PublicKey, message *common.Message, chat *Chat, responseTo *common.Message) (bool, ActivityCenterType) { + if chat == nil || !chat.Active || (!chat.CommunityChat() && !chat.PrivateGroupChat()) { + return false, ActivityCenterNotificationNoType } - if message.Mentioned && chat != nil && (chat.CommunityChat() || chat.PrivateGroupChat()) { - return true + if message.Mentioned { + return true, ActivityCenterNotificationTypeMention } - return false + publicKeyString := common.PubkeyToHex(&publicKey) + if responseTo != nil && responseTo.From == publicKeyString { + return true, ActivityCenterNotificationTypeReply + } + + return false, ActivityCenterNotificationNoType } diff --git a/protocol/messenger.go b/protocol/messenger.go index 86da7a048..9d4f0b292 100644 --- a/protocol/messenger.go +++ b/protocol/messenger.go @@ -2415,12 +2415,13 @@ func (r *ReceivedMessageState) addNewActivityCenterNotification(publicKey ecdsa. return fmt.Errorf("chat ID '%s' not present", message.LocalChatID) } - if showMentionActivityCenterNotification(publicKey, message, chat, responseTo) { + isNotification, notificationType := showMentionOrReplyActivityCenterNotification(publicKey, message, chat, responseTo) + if isNotification { notification := &ActivityCenterNotification{ ID: types.FromHex(message.ID), Name: chat.Name, Message: message, - Type: ActivityCenterNotificationTypeMention, + Type: notificationType, Timestamp: message.WhisperTimestamp, ChatID: chat.ID, }