From 302437e32ecfedfa9964eeb6ea10fc0122c8a984 Mon Sep 17 00:00:00 2001 From: Mikhail Rogachev Date: Fri, 14 Apr 2023 13:02:28 +0400 Subject: [PATCH] fix: Move ActivityCenterNotificationTypeCommunityKicked to the right place (#3390) --- protocol/communities_messenger_test.go | 32 ++++++++++++++++++++++++++ protocol/messenger.go | 15 ++++++++++-- protocol/messenger_handler.go | 15 ------------ 3 files changed, 45 insertions(+), 17 deletions(-) diff --git a/protocol/communities_messenger_test.go b/protocol/communities_messenger_test.go index d5ea8a090..59ea6dd7a 100644 --- a/protocol/communities_messenger_test.go +++ b/protocol/communities_messenger_test.go @@ -996,6 +996,16 @@ func (s *MessengerCommunitiesSuite) TestRequestAccess() { s.Require().Equal(requestToJoin1.ID, requestToJoin2.ID) + s.Require().Len(response.ActivityCenterNotifications(), 1) + + notification = response.ActivityCenterNotifications()[0] + s.Require().NotNil(notification) + s.Require().Equal(notification.Type, ActivityCenterNotificationTypeCommunityMembershipRequest) + s.Require().Equal(notification.MembershipStatus, ActivityCenterMembershipStatusPending) + s.Require().Equal(notification.Read, false) + s.Require().Equal(notification.Accepted, false) + s.Require().Equal(notification.Dismissed, false) + // Accept request acceptRequestToJoin := &requests.AcceptRequestToJoinCommunity{ID: requestToJoin1.ID} @@ -1039,6 +1049,16 @@ func (s *MessengerCommunitiesSuite) TestRequestAccess() { s.Require().Len(response.RequestsToJoinCommunity, 1) s.Require().Equal(communities.RequestToJoinStateAccepted, response.RequestsToJoinCommunity[0].State) + s.Require().Len(response.ActivityCenterNotifications(), 1) + + notification = response.ActivityCenterNotifications()[0] + s.Require().NotNil(notification) + s.Require().Equal(notification.Type, ActivityCenterNotificationTypeCommunityRequest) + s.Require().Equal(notification.MembershipStatus, ActivityCenterMembershipStatusAccepted) + s.Require().Equal(notification.Read, true) + s.Require().Equal(notification.Accepted, false) + s.Require().Equal(notification.Dismissed, false) + s.Require().Len(response.Communities(), 1) aliceCommunity := response.Communities()[0] @@ -1453,6 +1473,18 @@ func (s *MessengerCommunitiesSuite) TestRequestAccessAgain() { return nil }) + // Check we got AC notification for Alice + aliceNotifications, err := s.alice.ActivityCenterNotifications(ActivityCenterNotificationsRequest{ + Cursor: "", + Limit: 10, + ActivityTypes: []ActivityCenterType{ActivityCenterNotificationTypeCommunityKicked}, + ReadType: ActivityCenterQueryParamsReadUnread, + }, + ) + s.Require().NoError(err) + s.Require().Len(aliceNotifications.Notifications, 1) + s.Require().Equal(community.IDString(), aliceNotifications.Notifications[0].CommunityID) + s.Require().NoError(err) s.Require().NotNil(response) diff --git a/protocol/messenger.go b/protocol/messenger.go index 2dadd21f3..e6fc2f892 100644 --- a/protocol/messenger.go +++ b/protocol/messenger.go @@ -3884,7 +3884,6 @@ func (m *Messenger) handleRetrievedMessages(chatWithMessages map[transport.Filte continue } case protobuf.RetractContactRequest: - logger.Debug("Handling RetractContactRequest") message := msg.ParsedMessage.Interface().(protobuf.RetractContactRequest) m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, message) @@ -4265,9 +4264,21 @@ func (m *Messenger) handleRetrievedMessages(chatWithMessages map[transport.Filte if err := messageState.Response.Merge(response); err != nil { logger.Error("cannot merge join community response", zap.Error(err)) continue - } + // Activity Center notification + notification := &ActivityCenterNotification{ + ID: types.FromHex(uuid.New().String()), + Type: ActivityCenterNotificationTypeCommunityKicked, + Timestamp: m.getTimesource().GetCurrentTime(), + CommunityID: changes.Community.IDString(), + } + + err = m.addActivityCenterNotification(response, notification) + if err != nil { + m.logger.Error("failed to save notification", zap.Error(err)) + continue + } } } diff --git a/protocol/messenger_handler.go b/protocol/messenger_handler.go index f41f86c89..ca0bfec85 100644 --- a/protocol/messenger_handler.go +++ b/protocol/messenger_handler.go @@ -11,7 +11,6 @@ import ( "github.com/status-im/status-go/signal" - "github.com/pborman/uuid" "github.com/pkg/errors" "go.uber.org/zap" @@ -1449,20 +1448,6 @@ func (m *Messenger) HandleCommunityRequestToLeave(state *ReceivedMessageState, s state.Response.AddCommunity(response.Communities()[0]) } - // Activity Center notification - notification := &ActivityCenterNotification{ - ID: types.FromHex(uuid.NewRandom().String()), - Type: ActivityCenterNotificationTypeCommunityKicked, - Timestamp: m.getTimesource().GetCurrentTime(), - CommunityID: string(requestToLeaveProto.CommunityId), - } - - err = m.addActivityCenterNotification(state.Response, notification) - if err != nil { - m.logger.Error("failed to save notification", zap.Error(err)) - return err - } - return nil }