From 8b9ee803e200314e8cc701a6755725b3237e5731 Mon Sep 17 00:00:00 2001 From: Patryk Osmaczko Date: Tue, 8 Aug 2023 15:16:29 +0200 Subject: [PATCH] feat: auto re-apply rejected community events closes: status-im/status-desktop#11552 --- protocol/communities/community_event.go | 4 +- .../communities/community_event_message.go | 29 +++ protocol/communities/manager.go | 75 ++++++-- protocol/communities_messenger_admin_test.go | 72 ++++++++ .../communities_messenger_helpers_test.go | 28 +++ ...nities_messenger_token_permissions_test.go | 36 +--- protocol/messenger.go | 13 +- protocol/messenger_communities.go | 76 ++++++-- .../application_metadata_message.pb.go | 140 +++++++------- .../application_metadata_message.proto | 3 +- protocol/protobuf/community_update.pb.go | 173 +++++++++++------- protocol/protobuf/community_update.proto | 4 + protocol/v1/status_message.go | 4 +- 13 files changed, 463 insertions(+), 194 deletions(-) diff --git a/protocol/communities/community_event.go b/protocol/communities/community_event.go index d5b5e7d1a..21e8ec5f0 100644 --- a/protocol/communities/community_event.go +++ b/protocol/communities/community_event.go @@ -11,6 +11,8 @@ import ( "github.com/status-im/status-go/protocol/protobuf" ) +var ErrInvalidCommunityEventClock = errors.New("clock for admin event message is outdated") + func (o *Community) ToCreateChannelCommunityEvent(channelID string, channel *protobuf.CommunityChat) *CommunityEvent { return &CommunityEvent{ CommunityEventClock: o.NewCommunityEventClock(), @@ -190,7 +192,7 @@ func (o *Community) UpdateCommunityByEvents(communityEventMessage *CommunityEven } if description.Clock != o.config.CommunityDescription.Clock { - return nil, errors.New("clock for admin event message is outdated") + return nil, ErrInvalidCommunityEventClock } // Create a deep copy of current community so we can update CommunityDescription by new admin events diff --git a/protocol/communities/community_event_message.go b/protocol/communities/community_event_message.go index 7cc113fd4..53891c31d 100644 --- a/protocol/communities/community_event_message.go +++ b/protocol/communities/community_event_message.go @@ -2,12 +2,14 @@ package communities import ( "bytes" + "crypto/ecdsa" "encoding/json" "errors" "sort" "github.com/golang/protobuf/proto" + "github.com/status-im/status-go/eth-node/crypto" "github.com/status-im/status-go/protocol/protobuf" ) @@ -42,6 +44,7 @@ func (e *CommunityEvent) ToProtobuf() *protobuf.CommunityEvent { TokenMetadata: e.TokenMetadata, } } + func communityEventFromProtobuf(msg *protobuf.SignedCommunityEvent) (*CommunityEvent, error) { decodedEvent := protobuf.CommunityEvent{} err := proto.Unmarshal(msg.Payload, &decodedEvent) @@ -66,6 +69,32 @@ func communityEventFromProtobuf(msg *protobuf.SignedCommunityEvent) (*CommunityE }, nil } +func (e *CommunityEvent) RecoverSigner() (*ecdsa.PublicKey, error) { + if e.Signature == nil || len(e.Signature) == 0 { + return nil, errors.New("missing signature") + } + + signer, err := crypto.SigToPub( + crypto.Keccak256(e.Payload), + e.Signature, + ) + if err != nil { + return nil, errors.New("failed to recover signer") + } + + return signer, nil +} + +func (e *CommunityEvent) Sign(pk *ecdsa.PrivateKey) error { + sig, err := crypto.Sign(crypto.Keccak256(e.Payload), pk) + if err != nil { + return err + } + + e.Signature = sig + return nil +} + type CommunityEventsMessage struct { CommunityID []byte `json:"communityId"` EventsBaseCommunityDescription []byte `json:"eventsBaseCommunityDescription"` diff --git a/protocol/communities/manager.go b/protocol/communities/manager.go index 2a33fc399..b45a82b18 100644 --- a/protocol/communities/manager.go +++ b/protocol/communities/manager.go @@ -302,6 +302,7 @@ type Subscription struct { DownloadingHistoryArchivesFinishedSignal *signal.DownloadingHistoryArchivesFinishedSignal ImportingHistoryArchiveMessagesSignal *signal.ImportingHistoryArchiveMessagesSignal CommunityEventsMessage *CommunityEventsMessage + CommunityEventsMessageInvalidClock *CommunityEventsMessageInvalidClockSignal AcceptedRequestsToJoin []types.HexBytes RejectedRequestsToJoin []types.HexBytes } @@ -311,6 +312,11 @@ type CommunityResponse struct { Changes *CommunityChanges `json:"changes"` } +type CommunityEventsMessageInvalidClockSignal struct { + Community *Community + CommunityEventsMessage *CommunityEventsMessage +} + func (m *Manager) Subscribe() chan *Subscription { subscription := make(chan *Subscription, 100) m.subscriptions = append(m.subscriptions, subscription) @@ -1318,8 +1324,7 @@ func (m *Manager) signEvents(community *Community) error { for i := range community.config.EventsData.Events { communityEvent := &community.config.EventsData.Events[i] if communityEvent.Signature == nil || len(communityEvent.Signature) == 0 { - var err error - communityEvent.Signature, err = crypto.Sign(crypto.Keccak256(communityEvent.Payload), m.identity) + err := communityEvent.Sign(m.identity) if err != nil { return err } @@ -1332,16 +1337,9 @@ func (m *Manager) validateAndFilterEvents(community *Community, events []Communi validatedEvents := make([]CommunityEvent, 0, len(events)) validateEvent := func(event *CommunityEvent) error { - if event.Signature == nil || len(event.Signature) == 0 { - return errors.New("missing signature") - } - - signer, err := crypto.SigToPub( - crypto.Keccak256(event.Payload), - event.Signature, - ) + signer, err := event.RecoverSigner() if err != nil { - return errors.New("failed to recover signer") + return err } err = community.ValidateEvent(event, signer) @@ -1390,6 +1388,13 @@ func (m *Manager) HandleCommunityEventsMessage(signer *ecdsa.PublicKey, message changes, err := community.UpdateCommunityByEvents(eventsMessage) if err != nil { + if err == ErrInvalidCommunityEventClock && community.IsControlNode() { + m.publish(&Subscription{ + CommunityEventsMessageInvalidClock: &CommunityEventsMessageInvalidClockSignal{ + Community: community, + CommunityEventsMessage: eventsMessage, + }}) + } return nil, err } @@ -1425,6 +1430,54 @@ func (m *Manager) HandleCommunityEventsMessage(signer *ecdsa.PublicKey, message }, nil } +// Creates new CommunityEventsMessage by re-applying our rejected events on top of latest known CommunityDescription. +// Returns nil if none of our events were rejected. +func (m *Manager) HandleCommunityEventsMessageRejected(signer *ecdsa.PublicKey, message *protobuf.CommunityEventsMessageRejected) (*CommunityEventsMessage, error) { + if signer == nil { + return nil, errors.New("signer can't be nil") + } + + id := crypto.CompressPubkey(signer) + community, err := m.persistence.GetByID(&m.identity.PublicKey, id) + if err != nil { + return nil, err + } + if community == nil { + return nil, ErrOrgNotFound + } + + eventsMessage, err := CommunityEventsMessageFromProtobuf(message.Msg) + if err != nil { + return nil, err + } + eventsMessage.Events = m.validateAndFilterEvents(community, eventsMessage.Events) + + myRejectedEvents := make([]CommunityEvent, 0) + for _, rejectedEvent := range eventsMessage.Events { + rejectedEventSigner, err := rejectedEvent.RecoverSigner() + if err != nil { + continue + } + + if rejectedEventSigner.Equal(m.identity.Public()) { + myRejectedEvents = append(myRejectedEvents, rejectedEvent) + } + } + + if len(myRejectedEvents) == 0 { + return nil, nil + } + + // Re-apply rejected events on top of latest known `CommunityDescription` + community.config.EventsData = &EventsData{ + EventsBaseCommunityDescription: community.config.CommunityDescriptionProtocolMessage, + Events: myRejectedEvents, + } + reapplyEventsMessage := community.ToCommunityEventsMessage() + + return reapplyEventsMessage, nil +} + func (m *Manager) handleAdditionalAdminChanges(community *Community) error { if !(community.IsControlNode() || community.HasPermissionToSendCommunityEvents()) { diff --git a/protocol/communities_messenger_admin_test.go b/protocol/communities_messenger_admin_test.go index e28d19116..a34759dd0 100644 --- a/protocol/communities_messenger_admin_test.go +++ b/protocol/communities_messenger_admin_test.go @@ -13,8 +13,10 @@ import ( gethbridge "github.com/status-im/status-go/eth-node/bridge/geth" "github.com/status-im/status-go/eth-node/types" "github.com/status-im/status-go/protocol/common" + "github.com/status-im/status-go/protocol/communities" "github.com/status-im/status-go/protocol/communities/token" "github.com/status-im/status-go/protocol/protobuf" + "github.com/status-im/status-go/protocol/requests" "github.com/status-im/status-go/protocol/tt" "github.com/status-im/status-go/services/wallet/bigint" "github.com/status-im/status-go/waku" @@ -280,3 +282,73 @@ func (s *AdminCommunityEventsSuite) TestMemberReceiveAdminEventsWhenOwnerOffline community := setUpCommunityAndRoles(s, protobuf.CommunityMember_ROLE_ADMIN) testMemberReceiveEventsWhenControlNodeOffline(s, community) } + +func (s *AdminCommunityEventsSuite) TestAdminResendRejectedEvents() { + community := setUpCommunityAndRoles(s, protobuf.CommunityMember_ROLE_ADMIN) + + // admin modifies community description + adminEditRequest := &requests.EditCommunity{ + CommunityID: community.ID(), + CreateCommunity: requests.CreateCommunity{ + Name: "admin name", + Description: "admin description", + Color: "#FFFFFF", + Membership: protobuf.CommunityPermissions_ON_REQUEST, + }, + } + _, err := s.admin.EditCommunity(adminEditRequest) + s.Require().NoError(err) + + // in the meantime, control node updates community description as well + ownerEditRequest := &requests.EditCommunity{ + CommunityID: community.ID(), + CreateCommunity: requests.CreateCommunity{ + Name: "control node name", + Description: "control node description", + Color: "#FFFFFF", + Membership: protobuf.CommunityPermissions_ON_REQUEST, + }, + } + _, err = s.owner.EditCommunity(ownerEditRequest) + s.Require().NoError(err) + + waitOnAdminEventsRejection := waitOnCommunitiesEvent(s.owner, func(s *communities.Subscription) bool { + return s.CommunityEventsMessageInvalidClock != nil + }) + + // control node receives admin event and rejects it + _, err = WaitOnMessengerResponse(s.owner, func(response *MessengerResponse) bool { + select { + case err := <-waitOnAdminEventsRejection: + s.Require().NoError(err) + return true + default: + return false + } + }, "") + s.Require().NoError(err) + + community, err = s.owner.communitiesManager.GetByID(community.ID()) + s.Require().NoError(err) + s.Require().Equal(ownerEditRequest.Description, community.DescriptionText()) + + // admin receives rejected events and re-applies them + // there is no signal whatsoever, we just wait for admin to process all incoming messages + _, _ = WaitOnMessengerResponse(s.admin, func(response *MessengerResponse) bool { + return false + }, "") + + // control node receives re-applied admin event and accepts it + response, err := WaitOnMessengerResponse(s.owner, func(response *MessengerResponse) bool { + return len(response.Communities()) > 0 + }, "no communities in response") + s.Require().NoError(err) + s.Require().Equal(adminEditRequest.Description, response.Communities()[0].DescriptionText()) + + // admin receives updated community description + response, err = WaitOnMessengerResponse(s.admin, func(response *MessengerResponse) bool { + return len(response.Communities()) > 0 + }, "no communities in response") + s.Require().NoError(err) + s.Require().Equal(adminEditRequest.Description, response.Communities()[0].DescriptionText()) +} diff --git a/protocol/communities_messenger_helpers_test.go b/protocol/communities_messenger_helpers_test.go index 4167e76af..7328b79a8 100644 --- a/protocol/communities_messenger_helpers_test.go +++ b/protocol/communities_messenger_helpers_test.go @@ -432,3 +432,31 @@ func checkMemberJoinedToTheCommunity(response *MessengerResponse, member *ecdsa. return nil } + +func waitOnCommunitiesEvent(user *Messenger, condition func(*communities.Subscription) bool) <-chan error { + errCh := make(chan error, 1) + + go func() { + defer close(errCh) + + for { + select { + case sub, more := <-user.communitiesManager.Subscribe(): + if !more { + errCh <- errors.New("channel closed when waiting for communities event") + return + } + + if condition(sub) { + return + } + + case <-time.After(500 * time.Millisecond): + errCh <- errors.New("timed out when waiting for communities event") + return + } + } + }() + + return errCh +} diff --git a/protocol/communities_messenger_token_permissions_test.go b/protocol/communities_messenger_token_permissions_test.go index ec1029c21..7b8cc2a25 100644 --- a/protocol/communities_messenger_token_permissions_test.go +++ b/protocol/communities_messenger_token_permissions_test.go @@ -198,34 +198,6 @@ func (s *MessengerCommunitiesTokenPermissionsSuite) makeAddressSatisfyTheCriteri s.mockedBalances[chainID][walletAddress][contractAddress] = (*hexutil.Big)(balance) } -func (s *MessengerCommunitiesTokenPermissionsSuite) waitOnCommunitiesEvent(user *Messenger, condition func(*communities.Subscription) bool) <-chan error { - errCh := make(chan error, 1) - - go func() { - defer close(errCh) - - for { - select { - case sub, more := <-user.communitiesManager.Subscribe(): - if !more { - errCh <- errors.New("channel closed when waiting for communities event") - return - } - - if condition(sub) { - return - } - - case <-time.After(500 * time.Millisecond): - errCh <- errors.New("timed out when waiting for communities event") - return - } - } - }() - - return errCh -} - func (s *MessengerCommunitiesTokenPermissionsSuite) waitOnKeyDistribution(condition func(*CommunityAndKeyActions) bool) <-chan error { testCommunitiesKeyDistributor, ok := s.owner.communitiesKeyDistributor.(*TestCommunitiesKeyDistributor) s.Require().True(ok) @@ -597,7 +569,7 @@ func (s *MessengerCommunitiesTokenPermissionsSuite) TestBecomeMemberPermissions( }, } - waitOnBobToBeKicked := s.waitOnCommunitiesEvent(s.owner, func(sub *communities.Subscription) bool { + waitOnBobToBeKicked := waitOnCommunitiesEvent(s.owner, func(sub *communities.Subscription) bool { return len(sub.Community.Members()) == 1 }) waitOnCommunityToBeRekeyedOnceBobIsKicked := s.waitOnKeyDistribution(func(sub *CommunityAndKeyActions) bool { @@ -885,7 +857,7 @@ func (s *MessengerCommunitiesTokenPermissionsSuite) TestViewChannelPermissions() ChatIds: []string{chat.ID}, } - waitOnBobToBeKickedFromChannel := s.waitOnCommunitiesEvent(s.owner, func(sub *communities.Subscription) bool { + waitOnBobToBeKickedFromChannel := waitOnCommunitiesEvent(s.owner, func(sub *communities.Subscription) bool { for channelID, channel := range sub.Community.Chats() { if channelID == chat.CommunityChatID() && len(channel.Members) == 1 { return true @@ -1015,7 +987,7 @@ func (s *MessengerCommunitiesTokenPermissionsSuite) testReevaluateMemberPrivileg s.Require().Len(response.Communities(), 1) s.Require().True(response.Communities()[0].HasTokenPermissions()) - waitOnCommunityPermissionCreated := s.waitOnCommunitiesEvent(s.owner, func(sub *communities.Subscription) bool { + waitOnCommunityPermissionCreated := waitOnCommunitiesEvent(s.owner, func(sub *communities.Subscription) bool { return sub.Community.HasTokenPermissions() }) @@ -1125,7 +1097,7 @@ func (s *MessengerCommunitiesTokenPermissionsSuite) testReevaluateMemberPrivileg s.Require().Len(response.Communities(), 1) s.Require().True(response.Communities()[0].HasTokenPermissions()) - waitOnCommunityPermissionCreated := s.waitOnCommunitiesEvent(s.owner, func(sub *communities.Subscription) bool { + waitOnCommunityPermissionCreated := waitOnCommunitiesEvent(s.owner, func(sub *communities.Subscription) bool { return len(sub.Community.TokenPermissions()) == 2 }) diff --git a/protocol/messenger.go b/protocol/messenger.go index ed9115e46..156aa0b3a 100644 --- a/protocol/messenger.go +++ b/protocol/messenger.go @@ -4392,7 +4392,18 @@ func (m *Messenger) handleRetrievedMessages(chatWithMessages map[transport.Filte m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, message) err = m.handleCommunityEventsMessage(messageState, publicKey, message) if err != nil { - logger.Warn("failed to handle CommunityEvent", zap.Error(err)) + logger.Warn("failed to handle CommunityEventsMessage", zap.Error(err)) + allMessagesProcessed = false + continue + } + + case protobuf.CommunityEventsMessageRejected: + logger.Debug("Handling CommunityEventsMessageRejected") + message := msg.ParsedMessage.Interface().(protobuf.CommunityEventsMessageRejected) + m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, message) + err = m.handleCommunityEventsMessageRejected(messageState, publicKey, message) + if err != nil { + logger.Warn("failed to handle CommunityEventsMessageRejected", zap.Error(err)) allMessagesProcessed = false continue } diff --git a/protocol/messenger_communities.go b/protocol/messenger_communities.go index b5daaa209..92623a645 100644 --- a/protocol/messenger_communities.go +++ b/protocol/messenger_communities.go @@ -84,15 +84,10 @@ func (m *Messenger) publishOrg(org *communities.Community) error { return err } -func (m *Messenger) publishCommunityEventsMessage(adminMessage *communities.CommunityEventsMessage) error { - adminPubkey := common.PubkeyToHex(&m.identity.PublicKey) - m.logger.Debug("publishing community admin event", zap.String("admin-id", adminPubkey), zap.Any("event", adminMessage)) - _, err := crypto.DecompressPubkey(adminMessage.CommunityID) - if err != nil { - return err - } +func (m *Messenger) publishCommunityEvents(msg *communities.CommunityEventsMessage) error { + m.logger.Debug("publishing community events", zap.String("admin-id", common.PubkeyToHex(&m.identity.PublicKey)), zap.Any("event", msg)) - payload, err := adminMessage.Marshal() + payload, err := msg.Marshal() if err != nil { return err } @@ -102,10 +97,40 @@ func (m *Messenger) publishCommunityEventsMessage(adminMessage *communities.Comm Sender: m.identity, // we don't want to wrap in an encryption layer message SkipProtocolLayer: true, - MessageType: protobuf.ApplicationMetadataMessage_COMMUNITY_ADMIN_MESSAGE, + MessageType: protobuf.ApplicationMetadataMessage_COMMUNITY_EVENTS_MESSAGE, } - _, err = m.sender.SendPublic(context.Background(), types.EncodeHex(adminMessage.CommunityID), rawMessage) + // TODO: resend in case of failure? + _, err = m.sender.SendPublic(context.Background(), types.EncodeHex(msg.CommunityID), rawMessage) + return err +} + +func (m *Messenger) publishCommunityEventsRejected(community *communities.Community, msg *communities.CommunityEventsMessage) error { + if !community.IsControlNode() { + return communities.ErrNotControlNode + } + m.logger.Debug("publishing community events rejected", zap.Any("event", msg)) + + communityEventsMessage := msg.ToProtobuf() + communityEventsMessageRejected := &protobuf.CommunityEventsMessageRejected{ + Msg: &communityEventsMessage, + } + + payload, err := proto.Marshal(communityEventsMessageRejected) + if err != nil { + return err + } + + rawMessage := common.RawMessage{ + Payload: payload, + Sender: community.PrivateKey(), + // we don't want to wrap in an encryption layer message + SkipProtocolLayer: true, + MessageType: protobuf.ApplicationMetadataMessage_COMMUNITY_EVENTS_MESSAGE_REJECTED, + } + + // TODO: resend in case of failure? + _, err = m.sender.SendPublic(context.Background(), types.EncodeHex(msg.CommunityID), rawMessage) return err } @@ -249,9 +274,17 @@ func (m *Messenger) handleCommunitiesSubscription(c chan *communities.Subscripti } if sub.CommunityEventsMessage != nil { - err := m.publishCommunityEventsMessage(sub.CommunityEventsMessage) + err := m.publishCommunityEvents(sub.CommunityEventsMessage) if err != nil { - m.logger.Warn("failed to publish community admin event", zap.Error(err)) + m.logger.Warn("failed to publish community events", zap.Error(err)) + } + } + + if sub.CommunityEventsMessageInvalidClock != nil { + err := m.publishCommunityEventsRejected(sub.CommunityEventsMessageInvalidClock.Community, + sub.CommunityEventsMessageInvalidClock.CommunityEventsMessage) + if err != nil { + m.logger.Warn("failed to publish community events rejected", zap.Error(err)) } } @@ -2485,7 +2518,6 @@ func (m *Messenger) handleCommunityResponse(state *ReceivedMessageState, communi } func (m *Messenger) handleCommunityEventsMessage(state *ReceivedMessageState, signer *ecdsa.PublicKey, message protobuf.CommunityEventsMessage) error { - communityResponse, err := m.communitiesManager.HandleCommunityEventsMessage(signer, &message) if err != nil { return err @@ -2494,6 +2526,24 @@ func (m *Messenger) handleCommunityEventsMessage(state *ReceivedMessageState, si return m.handleCommunityResponse(state, communityResponse) } +// Re-sends rejected events, if any. +func (m *Messenger) handleCommunityEventsMessageRejected(state *ReceivedMessageState, signer *ecdsa.PublicKey, message protobuf.CommunityEventsMessageRejected) error { + reapplyEventsMessage, err := m.communitiesManager.HandleCommunityEventsMessageRejected(signer, &message) + if err != nil { + return err + } + if reapplyEventsMessage == nil { + return nil + } + + err = m.publishCommunityEvents(reapplyEventsMessage) + if err != nil { + return err + } + + return nil +} + func (m *Messenger) handleSyncCommunity(messageState *ReceivedMessageState, syncCommunity protobuf.SyncCommunity) error { logger := m.logger.Named("handleSyncCommunity") diff --git a/protocol/protobuf/application_metadata_message.pb.go b/protocol/protobuf/application_metadata_message.pb.go index b43ced668..b2aa27268 100644 --- a/protocol/protobuf/application_metadata_message.pb.go +++ b/protocol/protobuf/application_metadata_message.pb.go @@ -89,10 +89,11 @@ const ( ApplicationMetadataMessage_SYNC_ENS_USERNAME_DETAIL ApplicationMetadataMessage_Type = 64 ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_NOTIFICATION ApplicationMetadataMessage_Type = 65 ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_NOTIFICATION_STATE ApplicationMetadataMessage_Type = 66 - ApplicationMetadataMessage_COMMUNITY_ADMIN_MESSAGE ApplicationMetadataMessage_Type = 67 + ApplicationMetadataMessage_COMMUNITY_EVENTS_MESSAGE ApplicationMetadataMessage_Type = 67 ApplicationMetadataMessage_COMMUNITY_EDIT_SHARED_ADDRESSES ApplicationMetadataMessage_Type = 68 ApplicationMetadataMessage_SYNC_ACCOUNT_CUSTOMIZATION_COLOR ApplicationMetadataMessage_Type = 69 ApplicationMetadataMessage_SYNC_ACCOUNTS_POSITIONS ApplicationMetadataMessage_Type = 70 + ApplicationMetadataMessage_COMMUNITY_EVENTS_MESSAGE_REJECTED ApplicationMetadataMessage_Type = 71 ) var ApplicationMetadataMessage_Type_name = map[int32]string{ @@ -162,10 +163,11 @@ var ApplicationMetadataMessage_Type_name = map[int32]string{ 64: "SYNC_ENS_USERNAME_DETAIL", 65: "SYNC_ACTIVITY_CENTER_NOTIFICATION", 66: "SYNC_ACTIVITY_CENTER_NOTIFICATION_STATE", - 67: "COMMUNITY_ADMIN_MESSAGE", + 67: "COMMUNITY_EVENTS_MESSAGE", 68: "COMMUNITY_EDIT_SHARED_ADDRESSES", 69: "SYNC_ACCOUNT_CUSTOMIZATION_COLOR", 70: "SYNC_ACCOUNTS_POSITIONS", + 71: "COMMUNITY_EVENTS_MESSAGE_REJECTED", } var ApplicationMetadataMessage_Type_value = map[string]int32{ @@ -235,10 +237,11 @@ var ApplicationMetadataMessage_Type_value = map[string]int32{ "SYNC_ENS_USERNAME_DETAIL": 64, "SYNC_ACTIVITY_CENTER_NOTIFICATION": 65, "SYNC_ACTIVITY_CENTER_NOTIFICATION_STATE": 66, - "COMMUNITY_ADMIN_MESSAGE": 67, + "COMMUNITY_EVENTS_MESSAGE": 67, "COMMUNITY_EDIT_SHARED_ADDRESSES": 68, "SYNC_ACCOUNT_CUSTOMIZATION_COLOR": 69, "SYNC_ACCOUNTS_POSITIONS": 70, + "COMMUNITY_EVENTS_MESSAGE_REJECTED": 71, } func (x ApplicationMetadataMessage_Type) String() string { @@ -317,69 +320,70 @@ func init() { } var fileDescriptor_ad09a6406fcf24c7 = []byte{ - // 1014 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x56, 0x5d, 0x53, 0x5b, 0x37, - 0x10, 0x2d, 0x84, 0x02, 0x11, 0x5f, 0x42, 0xe1, 0xc3, 0x80, 0x01, 0xe3, 0x24, 0x84, 0x24, 0xad, - 0xd3, 0x26, 0x6d, 0xa7, 0x6d, 0x9a, 0xb6, 0xb2, 0xb4, 0xd8, 0x8a, 0xef, 0x95, 0x6e, 0x24, 0x5d, - 0x77, 0x9c, 0x17, 0x8d, 0xd3, 0xb8, 0x19, 0x66, 0x92, 0xe0, 0x09, 0xce, 0x03, 0xbf, 0xa1, 0xbf, - 0xb7, 0xef, 0x1d, 0xdd, 0x4f, 0x03, 0x26, 0x3c, 0x81, 0xf7, 0x1c, 0xad, 0xb4, 0x67, 0xcf, 0xae, - 0x8d, 0xea, 0xfd, 0xe1, 0xf0, 0xfd, 0xc9, 0xdf, 0xfd, 0xd1, 0xc9, 0xe9, 0x47, 0xf7, 0x61, 0x30, - 0xea, 0xbf, 0xed, 0x8f, 0xfa, 0xee, 0xc3, 0xe0, 0xec, 0xac, 0xff, 0x6e, 0xd0, 0x18, 0x7e, 0x3a, - 0x1d, 0x9d, 0x92, 0xf9, 0xe4, 0xcf, 0x9b, 0xcf, 0xff, 0xd4, 0xff, 0x5d, 0x45, 0xdb, 0xb4, 0x3c, - 0x10, 0x66, 0xfc, 0x30, 0xa5, 0x93, 0x2a, 0xba, 0x7d, 0x76, 0xf2, 0xee, 0x63, 0x7f, 0xf4, 0xf9, - 0xd3, 0xa0, 0x32, 0x55, 0x9b, 0x3a, 0x5a, 0xd4, 0x65, 0x80, 0x54, 0xd0, 0xdc, 0xb0, 0x7f, 0xfe, - 0xfe, 0xb4, 0xff, 0xb6, 0x32, 0x9d, 0x60, 0xf9, 0x47, 0xf2, 0x02, 0xcd, 0x8c, 0xce, 0x87, 0x83, - 0xca, 0xad, 0xda, 0xd4, 0xd1, 0xf2, 0xd3, 0x87, 0x8d, 0xfc, 0xbe, 0xc6, 0xf5, 0x77, 0x35, 0xec, - 0xf9, 0x70, 0xa0, 0x93, 0x63, 0xf5, 0xff, 0x56, 0xd0, 0x8c, 0xff, 0x48, 0x16, 0xd0, 0x5c, 0x2c, - 0x3b, 0x52, 0xfd, 0x25, 0xf1, 0x57, 0x04, 0xa3, 0x45, 0xd6, 0xa6, 0xd6, 0x85, 0x60, 0x0c, 0x6d, - 0x01, 0x9e, 0x22, 0x04, 0x2d, 0x33, 0x25, 0x2d, 0x65, 0xd6, 0xc5, 0x11, 0xa7, 0x16, 0xf0, 0x34, - 0xd9, 0x45, 0x5b, 0x21, 0x84, 0x4d, 0xd0, 0xa6, 0x2d, 0xa2, 0x2c, 0x5c, 0x1c, 0xb9, 0x45, 0xd6, - 0xd1, 0x6a, 0x44, 0x85, 0x76, 0x42, 0x1a, 0x4b, 0x83, 0x80, 0x5a, 0xa1, 0x24, 0x9e, 0xf1, 0x61, - 0xd3, 0x93, 0xec, 0x62, 0xf8, 0x6b, 0x72, 0x17, 0xed, 0x6b, 0x78, 0x15, 0x83, 0xb1, 0x8e, 0x72, - 0xae, 0xc1, 0x18, 0x77, 0xac, 0xb4, 0xb3, 0x9a, 0x4a, 0x43, 0x59, 0x42, 0x9a, 0x25, 0x8f, 0xd0, - 0x21, 0x65, 0x0c, 0x22, 0xeb, 0x6e, 0xe2, 0xce, 0x91, 0xc7, 0xe8, 0x01, 0x07, 0x16, 0x08, 0x09, - 0x37, 0x92, 0xe7, 0xc9, 0x26, 0xba, 0x93, 0x93, 0xc6, 0x81, 0xdb, 0x64, 0x0d, 0x61, 0x03, 0x92, - 0x5f, 0x88, 0x22, 0xb2, 0x8f, 0x76, 0x2e, 0xe7, 0x1e, 0x27, 0x2c, 0x78, 0x69, 0xae, 0x14, 0xe9, - 0x32, 0x01, 0xf1, 0xe2, 0x64, 0x98, 0x32, 0xa6, 0x62, 0x69, 0xf1, 0x12, 0x39, 0x40, 0xbb, 0x57, - 0xe1, 0x28, 0x6e, 0x06, 0x82, 0x39, 0xdf, 0x17, 0xbc, 0x4c, 0xf6, 0xd0, 0x76, 0xde, 0x0f, 0xa6, - 0x38, 0x38, 0xca, 0xbb, 0xa0, 0xad, 0x30, 0x10, 0x82, 0xb4, 0x78, 0x85, 0xd4, 0xd1, 0x5e, 0x14, - 0x9b, 0xb6, 0x93, 0xca, 0x8a, 0x63, 0xc1, 0xd2, 0x14, 0x1a, 0x5a, 0xc2, 0x58, 0x9d, 0x4a, 0x8e, - 0xbd, 0x42, 0x5f, 0xe6, 0x38, 0x0d, 0x26, 0x52, 0xd2, 0x00, 0x5e, 0x25, 0x3b, 0x68, 0xf3, 0x2a, - 0xf9, 0x55, 0x0c, 0xba, 0x87, 0x09, 0xb9, 0x87, 0x6a, 0xd7, 0x80, 0x65, 0x8a, 0x3b, 0xbe, 0xea, - 0x49, 0xf7, 0x25, 0xfa, 0xe1, 0x35, 0x5f, 0xd2, 0x24, 0x38, 0x3b, 0xbe, 0xee, 0x2d, 0x08, 0xa1, - 0x7a, 0x29, 0x9c, 0x86, 0x4c, 0xe7, 0x0d, 0xb2, 0x85, 0xd6, 0x5b, 0x5a, 0xc5, 0x51, 0x22, 0x8b, - 0x13, 0xb2, 0x2b, 0x6c, 0x5a, 0xdd, 0x26, 0x59, 0x45, 0x4b, 0x69, 0x90, 0x83, 0xb4, 0xc2, 0xf6, - 0x70, 0xc5, 0xb3, 0x99, 0x0a, 0xc3, 0x58, 0x0a, 0xdb, 0x73, 0x1c, 0x0c, 0xd3, 0x22, 0x4a, 0xd8, - 0x5b, 0xa4, 0x8a, 0xd6, 0x4a, 0x68, 0x2c, 0xcf, 0xf6, 0xf6, 0xf4, 0xfc, 0x94, 0x7f, 0x79, 0x89, - 0x16, 0x1d, 0x57, 0xee, 0xa5, 0x12, 0x12, 0xef, 0x90, 0x15, 0xb4, 0x10, 0x09, 0x59, 0x58, 0xbf, - 0xea, 0xe7, 0x07, 0xb8, 0x28, 0xe7, 0x67, 0xd7, 0xbf, 0xc6, 0x58, 0x6a, 0x63, 0x93, 0x8f, 0xcf, - 0x9e, 0xaf, 0x87, 0x43, 0x00, 0x63, 0x33, 0xb3, 0xef, 0x8d, 0x35, 0xc9, 0x37, 0xd9, 0xd5, 0xb8, - 0x46, 0xb6, 0xd1, 0x06, 0x95, 0x4a, 0xf6, 0x42, 0x15, 0x1b, 0x17, 0x82, 0xd5, 0x82, 0xb9, 0x26, - 0xb5, 0xac, 0x8d, 0x0f, 0x8a, 0xc9, 0x4a, 0xca, 0xd6, 0x10, 0xaa, 0x2e, 0x70, 0x5c, 0xf7, 0x9d, - 0x2b, 0xc3, 0xd9, 0x55, 0xc6, 0x8b, 0xc8, 0xf1, 0x5d, 0x82, 0xd0, 0x6c, 0x93, 0xb2, 0x4e, 0x1c, - 0xe1, 0x7b, 0x85, 0x2b, 0xbd, 0xba, 0x5d, 0x5f, 0x29, 0x03, 0x69, 0x41, 0xa7, 0xd4, 0xfb, 0x85, - 0x2b, 0x2f, 0xc3, 0xe9, 0x44, 0x02, 0xc7, 0x87, 0xde, 0x75, 0x13, 0x29, 0x5c, 0x98, 0x50, 0x18, - 0x03, 0x1c, 0x3f, 0x48, 0x94, 0xf0, 0x9c, 0xa6, 0x52, 0x9d, 0x90, 0xea, 0x0e, 0x3e, 0x22, 0x1b, - 0x88, 0xa4, 0x2f, 0x0c, 0x80, 0x6a, 0xd7, 0x16, 0xc6, 0x2a, 0xdd, 0xc3, 0x0f, 0xbd, 0x8c, 0x49, - 0xdc, 0x80, 0xb5, 0x42, 0xb6, 0xf0, 0x23, 0x52, 0x43, 0xd5, 0xb2, 0x11, 0x54, 0xb3, 0xb6, 0xe8, - 0x82, 0x0b, 0x69, 0x4b, 0x82, 0x0d, 0x84, 0xec, 0xe0, 0xc7, 0xa4, 0x82, 0xd6, 0x92, 0x33, 0x91, - 0x56, 0xc7, 0x22, 0x00, 0x17, 0x09, 0x66, 0x63, 0x0d, 0xf8, 0x9b, 0x22, 0x5b, 0x3e, 0x67, 0xdf, - 0x26, 0x62, 0xa6, 0xeb, 0x24, 0x9f, 0xa5, 0xdc, 0x8d, 0x0d, 0xaf, 0x9a, 0x06, 0xab, 0xd3, 0x01, - 0xbb, 0x08, 0x3e, 0x21, 0x87, 0xa8, 0x7e, 0xad, 0x1f, 0x4a, 0xcb, 0x7e, 0x57, 0x4a, 0x5f, 0x90, - 0xb3, 0x52, 0x0c, 0xfe, 0xde, 0xd7, 0x92, 0x1f, 0xcd, 0x6f, 0xe8, 0x82, 0x2e, 0xac, 0x8f, 0x9f, - 0x7a, 0x37, 0x5c, 0x7a, 0xdf, 0x05, 0xc2, 0x33, 0x9f, 0x22, 0xdf, 0x43, 0x13, 0x19, 0x3f, 0x14, - 0x9e, 0xb0, 0x3a, 0x36, 0x16, 0xb8, 0x8b, 0x0d, 0x68, 0xfc, 0x63, 0xd1, 0xea, 0x71, 0x76, 0x51, - 0xdf, 0x4f, 0x45, 0xab, 0x2f, 0x55, 0xee, 0x38, 0x30, 0x61, 0x7c, 0xe2, 0x9f, 0xd3, 0x05, 0x34, - 0x41, 0x82, 0x00, 0x68, 0x17, 0xf0, 0x2f, 0x1e, 0x4f, 0x52, 0x64, 0x16, 0xf7, 0x2b, 0x37, 0x2c, - 0x9d, 0xfe, 0x6b, 0xd1, 0x73, 0x43, 0xbb, 0xc0, 0xf3, 0xcd, 0x8c, 0x9f, 0xfb, 0x55, 0x52, 0xe6, - 0x65, 0x54, 0x32, 0x08, 0xae, 0x4c, 0xdc, 0x6f, 0x5e, 0x99, 0x0c, 0x9b, 0x58, 0xf7, 0x8b, 0xa2, - 0xd9, 0x1d, 0xe8, 0xf9, 0x2f, 0x21, 0xfc, 0x7b, 0xa1, 0x84, 0x51, 0x4c, 0xd0, 0xc0, 0x79, 0xbb, - 0x18, 0xfc, 0x07, 0xa9, 0xa2, 0x4a, 0x12, 0x06, 0x69, 0x12, 0x71, 0x24, 0x0d, 0xc1, 0x71, 0xb0, - 0x54, 0x04, 0xf8, 0x4f, 0x72, 0x1f, 0x1d, 0x4c, 0x34, 0xf4, 0xf8, 0x8e, 0xc2, 0xd4, 0x6f, 0xd2, - 0x1b, 0x69, 0xce, 0xcf, 0x3f, 0xe0, 0xa6, 0x37, 0xc5, 0x98, 0x87, 0x79, 0x38, 0xb6, 0x39, 0x98, - 0xff, 0x1a, 0x2c, 0xc1, 0x64, 0x87, 0x98, 0x36, 0xd5, 0xa5, 0x42, 0x60, 0x30, 0xf7, 0x1a, 0x8d, - 0x3b, 0xd9, 0xb1, 0xd8, 0x58, 0x15, 0x8a, 0xd7, 0xf9, 0xba, 0x08, 0x94, 0xc6, 0x50, 0x98, 0x2f, - 0x63, 0x19, 0x17, 0x29, 0x23, 0x3c, 0xc3, 0xe0, 0xe3, 0xe6, 0xd2, 0xeb, 0x85, 0xc6, 0x93, 0xe7, - 0xf9, 0x8f, 0x85, 0x37, 0xb3, 0xc9, 0x7f, 0xcf, 0xfe, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x99, 0x64, - 0xf4, 0xe4, 0xd3, 0x08, 0x00, 0x00, + // 1028 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x56, 0x6b, 0x73, 0x53, 0x37, + 0x10, 0x6d, 0x42, 0x9a, 0x04, 0xe5, 0xc1, 0x46, 0xe4, 0xe1, 0xbc, 0x13, 0x03, 0x21, 0x40, 0x6b, + 0x5a, 0x68, 0x3b, 0x6d, 0x29, 0x6d, 0x65, 0xdd, 0x8d, 0xad, 0xf8, 0x5e, 0xe9, 0x22, 0xe9, 0xba, + 0x63, 0xbe, 0x68, 0x4c, 0x71, 0x99, 0xcc, 0x00, 0xf1, 0x10, 0xf3, 0x21, 0x3f, 0xa6, 0xbf, 0xa2, + 0x7f, 0xb0, 0xa3, 0xeb, 0xfb, 0x70, 0x12, 0x87, 0x7c, 0x4a, 0xbc, 0x7b, 0xb4, 0xd2, 0x39, 0x7b, + 0x76, 0x6d, 0x52, 0xed, 0xf6, 0xfb, 0xef, 0x4f, 0xfe, 0xee, 0x0e, 0x4e, 0x4e, 0x3f, 0xba, 0x0f, + 0xbd, 0x41, 0xf7, 0x6d, 0x77, 0xd0, 0x75, 0x1f, 0x7a, 0x67, 0x67, 0xdd, 0x77, 0xbd, 0x5a, 0xff, + 0xd3, 0xe9, 0xe0, 0x94, 0xce, 0xa6, 0x7f, 0xde, 0x7c, 0xfe, 0xa7, 0xfa, 0xdf, 0x12, 0xd9, 0x60, + 0xe5, 0x81, 0x28, 0xc3, 0x47, 0x43, 0x38, 0xdd, 0x22, 0xb7, 0xcf, 0x4e, 0xde, 0x7d, 0xec, 0x0e, + 0x3e, 0x7f, 0xea, 0x55, 0x26, 0xf6, 0x26, 0x0e, 0xe7, 0x75, 0x19, 0xa0, 0x15, 0x32, 0xd3, 0xef, + 0x9e, 0xbf, 0x3f, 0xed, 0xbe, 0xad, 0x4c, 0xa6, 0xb9, 0xfc, 0x23, 0x7d, 0x49, 0xa6, 0x06, 0xe7, + 0xfd, 0x5e, 0xe5, 0xd6, 0xde, 0xc4, 0xe1, 0xe2, 0xb3, 0x47, 0xb5, 0xfc, 0xbe, 0xda, 0xf5, 0x77, + 0xd5, 0xec, 0x79, 0xbf, 0xa7, 0xd3, 0x63, 0xd5, 0x7f, 0x81, 0x4c, 0xf9, 0x8f, 0x74, 0x8e, 0xcc, + 0x24, 0xb2, 0x25, 0xd5, 0x5f, 0x12, 0xbe, 0xa2, 0x40, 0xe6, 0x79, 0x93, 0x59, 0x17, 0xa1, 0x31, + 0xac, 0x81, 0x30, 0x41, 0x29, 0x59, 0xe4, 0x4a, 0x5a, 0xc6, 0xad, 0x4b, 0xe2, 0x80, 0x59, 0x84, + 0x49, 0xba, 0x4d, 0xd6, 0x23, 0x8c, 0xea, 0xa8, 0x4d, 0x53, 0xc4, 0x59, 0xb8, 0x38, 0x72, 0x8b, + 0xae, 0x90, 0xa5, 0x98, 0x09, 0xed, 0x84, 0x34, 0x96, 0x85, 0x21, 0xb3, 0x42, 0x49, 0x98, 0xf2, + 0x61, 0xd3, 0x91, 0xfc, 0x62, 0xf8, 0x6b, 0x7a, 0x8f, 0xec, 0x6a, 0x7c, 0x95, 0xa0, 0xb1, 0x8e, + 0x05, 0x81, 0x46, 0x63, 0xdc, 0x91, 0xd2, 0xce, 0x6a, 0x26, 0x0d, 0xe3, 0x29, 0x68, 0x9a, 0x3e, + 0x26, 0x07, 0x8c, 0x73, 0x8c, 0xad, 0xbb, 0x09, 0x3b, 0x43, 0x9f, 0x90, 0x87, 0x01, 0xf2, 0x50, + 0x48, 0xbc, 0x11, 0x3c, 0x4b, 0xd7, 0xc8, 0xdd, 0x1c, 0x34, 0x9a, 0xb8, 0x4d, 0x97, 0x09, 0x18, + 0x94, 0xc1, 0x85, 0x28, 0xa1, 0xbb, 0x64, 0xf3, 0x72, 0xed, 0x51, 0xc0, 0x9c, 0x97, 0xe6, 0x0a, + 0x49, 0x97, 0x09, 0x08, 0xf3, 0xe3, 0xd3, 0x8c, 0x73, 0x95, 0x48, 0x0b, 0x0b, 0x74, 0x9f, 0x6c, + 0x5f, 0x4d, 0xc7, 0x49, 0x3d, 0x14, 0xdc, 0xf9, 0xbe, 0xc0, 0x22, 0xdd, 0x21, 0x1b, 0x79, 0x3f, + 0xb8, 0x0a, 0xd0, 0xb1, 0xa0, 0x8d, 0xda, 0x0a, 0x83, 0x11, 0x4a, 0x0b, 0x77, 0x68, 0x95, 0xec, + 0xc4, 0x89, 0x69, 0x3a, 0xa9, 0xac, 0x38, 0x12, 0x7c, 0x58, 0x42, 0x63, 0x43, 0x18, 0xab, 0x87, + 0x92, 0x83, 0x57, 0xe8, 0xcb, 0x18, 0xa7, 0xd1, 0xc4, 0x4a, 0x1a, 0x84, 0x25, 0xba, 0x49, 0xd6, + 0xae, 0x82, 0x5f, 0x25, 0xa8, 0x3b, 0x40, 0xe9, 0x7d, 0xb2, 0x77, 0x4d, 0xb2, 0x2c, 0x71, 0xd7, + 0xb3, 0x1e, 0x77, 0x5f, 0xaa, 0x1f, 0x2c, 0x7b, 0x4a, 0xe3, 0xd2, 0xd9, 0xf1, 0x15, 0x6f, 0x41, + 0x8c, 0xd4, 0xb1, 0x70, 0x1a, 0x33, 0x9d, 0x57, 0xe9, 0x3a, 0x59, 0x69, 0x68, 0x95, 0xc4, 0xa9, + 0x2c, 0x4e, 0xc8, 0xb6, 0xb0, 0x43, 0x76, 0x6b, 0x74, 0x89, 0x2c, 0x0c, 0x83, 0x01, 0x4a, 0x2b, + 0x6c, 0x07, 0x2a, 0x1e, 0xcd, 0x55, 0x14, 0x25, 0x52, 0xd8, 0x8e, 0x0b, 0xd0, 0x70, 0x2d, 0xe2, + 0x14, 0xbd, 0x4e, 0xb7, 0xc8, 0x72, 0x99, 0x1a, 0xa9, 0xb3, 0xb1, 0x31, 0x39, 0x3b, 0xe1, 0x5f, + 0x5e, 0x66, 0x8b, 0x8e, 0x2b, 0x77, 0xac, 0x84, 0x84, 0x4d, 0x7a, 0x87, 0xcc, 0xc5, 0x42, 0x16, + 0xd6, 0xdf, 0xf2, 0xf3, 0x83, 0x81, 0x28, 0xe7, 0x67, 0xdb, 0xbf, 0xc6, 0x58, 0x66, 0x13, 0x93, + 0x8f, 0xcf, 0x8e, 0xe7, 0x13, 0x60, 0x88, 0x23, 0x33, 0xb3, 0xeb, 0x8d, 0x35, 0xce, 0x37, 0xd9, + 0xd5, 0xb0, 0x47, 0x37, 0xc8, 0x2a, 0x93, 0x4a, 0x76, 0x22, 0x95, 0x18, 0x17, 0xa1, 0xd5, 0x82, + 0xbb, 0x3a, 0xb3, 0xbc, 0x09, 0xfb, 0xc5, 0x64, 0xa5, 0xb4, 0x35, 0x46, 0xaa, 0x8d, 0x01, 0x54, + 0x7d, 0xe7, 0xca, 0x70, 0x76, 0x95, 0xf1, 0x22, 0x06, 0x70, 0x8f, 0x12, 0x32, 0x5d, 0x67, 0xbc, + 0x95, 0xc4, 0x70, 0xbf, 0x70, 0xa5, 0x57, 0xb7, 0xed, 0x99, 0x72, 0x94, 0x16, 0xf5, 0x10, 0xfa, + 0xa0, 0x70, 0xe5, 0xe5, 0xf4, 0x70, 0x22, 0x31, 0x80, 0x03, 0xef, 0xba, 0xb1, 0x90, 0x40, 0x98, + 0x48, 0x18, 0x83, 0x01, 0x3c, 0x4c, 0x95, 0xf0, 0x98, 0xba, 0x52, 0xad, 0x88, 0xe9, 0x16, 0x1c, + 0xd2, 0x55, 0x42, 0x87, 0x2f, 0x0c, 0x91, 0x69, 0xd7, 0x14, 0xc6, 0x2a, 0xdd, 0x81, 0x47, 0x5e, + 0xc6, 0x34, 0x6e, 0xd0, 0x5a, 0x21, 0x1b, 0xf0, 0x98, 0xee, 0x91, 0xad, 0xb2, 0x11, 0x4c, 0xf3, + 0xa6, 0x68, 0xa3, 0x8b, 0x58, 0x43, 0xa2, 0x0d, 0x85, 0x6c, 0xc1, 0x13, 0x5a, 0x21, 0xcb, 0xe9, + 0x99, 0x58, 0xab, 0x23, 0x11, 0xa2, 0x8b, 0x05, 0xb7, 0x89, 0x46, 0xf8, 0xa6, 0xa8, 0x96, 0xcf, + 0xd9, 0xb7, 0xa9, 0x98, 0xc3, 0x75, 0x92, 0xcf, 0x52, 0xee, 0xc6, 0x9a, 0x57, 0x4d, 0xa3, 0xd5, + 0xc3, 0x01, 0xbb, 0x98, 0x7c, 0x4a, 0x0f, 0x48, 0xf5, 0x5a, 0x3f, 0x94, 0x96, 0xfd, 0xae, 0x94, + 0xbe, 0x00, 0x67, 0x54, 0x0c, 0x7c, 0xef, 0xb9, 0xe4, 0x47, 0xf3, 0x1b, 0xda, 0xa8, 0x0b, 0xeb, + 0xc3, 0x33, 0xef, 0x86, 0x4b, 0xef, 0xbb, 0x00, 0x78, 0xee, 0x4b, 0xe4, 0x7b, 0x68, 0x2c, 0xe2, + 0x87, 0xc2, 0x13, 0x56, 0x27, 0xc6, 0x62, 0xe0, 0x12, 0x83, 0x1a, 0x7e, 0x2c, 0x5a, 0x3d, 0x8a, + 0x2e, 0xf8, 0xfd, 0x54, 0xb4, 0xfa, 0x12, 0x73, 0x17, 0x20, 0x17, 0xc6, 0x17, 0xfe, 0x79, 0xb8, + 0x80, 0xc6, 0x48, 0x10, 0x22, 0x6b, 0x23, 0xfc, 0xe2, 0xf3, 0x69, 0x89, 0xcc, 0xe2, 0x7e, 0xe5, + 0x46, 0xa5, 0xd3, 0x7f, 0x2d, 0x7a, 0x6e, 0x58, 0x1b, 0x83, 0x7c, 0x33, 0xc3, 0x0b, 0xbf, 0x4a, + 0xca, 0xba, 0x9c, 0x49, 0x8e, 0xe1, 0x95, 0x89, 0xfb, 0xcd, 0x2b, 0x93, 0xe5, 0xc6, 0xf2, 0x7e, + 0x59, 0x34, 0xbb, 0x85, 0x1d, 0xff, 0x25, 0x04, 0xbf, 0x17, 0x4a, 0x18, 0xc5, 0x05, 0x0b, 0x9d, + 0xb7, 0x8b, 0x81, 0x3f, 0xe8, 0x16, 0xa9, 0xa4, 0x61, 0x94, 0x26, 0x15, 0x47, 0xb2, 0x08, 0x5d, + 0x80, 0x96, 0x89, 0x10, 0xfe, 0xa4, 0x0f, 0xc8, 0xfe, 0x58, 0x43, 0x8f, 0xee, 0x28, 0x60, 0x7e, + 0x93, 0xde, 0x08, 0x73, 0x7e, 0xfe, 0x11, 0xea, 0xfe, 0xc6, 0x92, 0x21, 0xb6, 0x51, 0x5a, 0x53, + 0xe8, 0xc2, 0xfd, 0xf7, 0xe0, 0x48, 0xd6, 0x2f, 0x11, 0xd3, 0x64, 0xba, 0x94, 0x08, 0x0d, 0x04, + 0x5e, 0xa4, 0x51, 0x2b, 0x3b, 0x9e, 0x18, 0xab, 0x22, 0xf1, 0x3a, 0xdf, 0x17, 0xa1, 0xd2, 0x80, + 0x85, 0xfb, 0x32, 0x94, 0x71, 0xb1, 0x32, 0xc2, 0x23, 0x0c, 0x1c, 0x79, 0x66, 0xd7, 0xbd, 0xc2, + 0x69, 0x3c, 0x46, 0xee, 0x27, 0xba, 0x51, 0x5f, 0x78, 0x3d, 0x57, 0x7b, 0xfa, 0x22, 0xff, 0x51, + 0xf1, 0x66, 0x3a, 0xfd, 0xef, 0xf9, 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0xdd, 0xe6, 0x40, 0xbc, + 0xfb, 0x08, 0x00, 0x00, } diff --git a/protocol/protobuf/application_metadata_message.proto b/protocol/protobuf/application_metadata_message.proto index 921f92bbb..e4c9eefd3 100644 --- a/protocol/protobuf/application_metadata_message.proto +++ b/protocol/protobuf/application_metadata_message.proto @@ -79,9 +79,10 @@ message ApplicationMetadataMessage { SYNC_ENS_USERNAME_DETAIL = 64; SYNC_ACTIVITY_CENTER_NOTIFICATION = 65; SYNC_ACTIVITY_CENTER_NOTIFICATION_STATE = 66; - COMMUNITY_ADMIN_MESSAGE = 67; + COMMUNITY_EVENTS_MESSAGE = 67; COMMUNITY_EDIT_SHARED_ADDRESSES = 68; SYNC_ACCOUNT_CUSTOMIZATION_COLOR = 69; SYNC_ACCOUNTS_POSITIONS = 70; + COMMUNITY_EVENTS_MESSAGE_REJECTED = 71; } } diff --git a/protocol/protobuf/community_update.pb.go b/protocol/protobuf/community_update.pb.go index e01cdc271..a53e842b9 100644 --- a/protocol/protobuf/community_update.pb.go +++ b/protocol/protobuf/community_update.pb.go @@ -536,6 +536,45 @@ func (m *CommunityEventsMessage) GetSignedEvents() []*SignedCommunityEvent { return nil } +type CommunityEventsMessageRejected struct { + Msg *CommunityEventsMessage `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CommunityEventsMessageRejected) Reset() { *m = CommunityEventsMessageRejected{} } +func (m *CommunityEventsMessageRejected) String() string { return proto.CompactTextString(m) } +func (*CommunityEventsMessageRejected) ProtoMessage() {} +func (*CommunityEventsMessageRejected) Descriptor() ([]byte, []int) { + return fileDescriptor_52ed23dfc73918ab, []int{6} +} + +func (m *CommunityEventsMessageRejected) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CommunityEventsMessageRejected.Unmarshal(m, b) +} +func (m *CommunityEventsMessageRejected) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CommunityEventsMessageRejected.Marshal(b, m, deterministic) +} +func (m *CommunityEventsMessageRejected) XXX_Merge(src proto.Message) { + xxx_messageInfo_CommunityEventsMessageRejected.Merge(m, src) +} +func (m *CommunityEventsMessageRejected) XXX_Size() int { + return xxx_messageInfo_CommunityEventsMessageRejected.Size(m) +} +func (m *CommunityEventsMessageRejected) XXX_DiscardUnknown() { + xxx_messageInfo_CommunityEventsMessageRejected.DiscardUnknown(m) +} + +var xxx_messageInfo_CommunityEventsMessageRejected proto.InternalMessageInfo + +func (m *CommunityEventsMessageRejected) GetMsg() *CommunityEventsMessage { + if m != nil { + return m.Msg + } + return nil +} + func init() { proto.RegisterEnum("protobuf.CommunityEvent_EventType", CommunityEvent_EventType_name, CommunityEvent_EventType_value) proto.RegisterType((*CommunityEvent)(nil), "protobuf.CommunityEvent") @@ -547,6 +586,7 @@ func init() { proto.RegisterType((*ChannelData)(nil), "protobuf.ChannelData") proto.RegisterType((*SignedCommunityEvent)(nil), "protobuf.SignedCommunityEvent") proto.RegisterType((*CommunityEventsMessage)(nil), "protobuf.CommunityEventsMessage") + proto.RegisterType((*CommunityEventsMessageRejected)(nil), "protobuf.CommunityEventsMessageRejected") } func init() { @@ -554,73 +594,74 @@ func init() { } var fileDescriptor_52ed23dfc73918ab = []byte{ - // 1073 bytes of a gzipped FileDescriptorProto + // 1095 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xcb, 0x6e, 0xdb, 0x46, 0x14, 0xad, 0x2c, 0xf9, 0xa1, 0xab, 0x87, 0xe9, 0x71, 0x6c, 0xd3, 0x4a, 0xe2, 0x2a, 0x6a, 0x17, - 0x42, 0x51, 0x38, 0xa8, 0x5b, 0x04, 0x41, 0xb3, 0x29, 0x4d, 0x0d, 0x1c, 0xda, 0x11, 0xe5, 0x8e, + 0x42, 0x51, 0x38, 0xa8, 0x5a, 0x04, 0x41, 0xb3, 0xa9, 0x4c, 0x0d, 0x1c, 0xda, 0x11, 0xe5, 0x8e, 0x69, 0x14, 0xc9, 0x86, 0x18, 0x93, 0x13, 0x99, 0xb5, 0x45, 0xaa, 0x9a, 0x51, 0x00, 0x6d, 0xfb, - 0x05, 0xfd, 0x80, 0x7e, 0x43, 0xd1, 0xbf, 0xea, 0x6f, 0x14, 0x9c, 0x21, 0x45, 0xd2, 0xa6, 0x9d, - 0x2e, 0xba, 0x91, 0x38, 0xf7, 0x9c, 0x7b, 0xce, 0xdc, 0x79, 0xf0, 0x12, 0x76, 0xbd, 0x68, 0x32, - 0x99, 0x87, 0x81, 0x58, 0xb8, 0xf3, 0xa9, 0x4f, 0x05, 0x3b, 0x9c, 0xce, 0x22, 0x11, 0xa1, 0x0d, - 0xf9, 0x77, 0x35, 0xff, 0xd8, 0xd9, 0xf6, 0xae, 0xa9, 0x70, 0x03, 0x9f, 0x85, 0x22, 0x10, 0x0b, - 0x05, 0x77, 0xb6, 0xd2, 0xb4, 0x80, 0x71, 0x15, 0xea, 0xfd, 0xd1, 0x82, 0xb6, 0x99, 0x8a, 0xe1, - 0x4f, 0x2c, 0x14, 0xe8, 0x08, 0x76, 0x32, 0x79, 0x16, 0x87, 0x5c, 0xef, 0x36, 0xf2, 0x6e, 0xf4, - 0x4a, 0xb7, 0xd2, 0xaf, 0x91, 0x6d, 0xaf, 0x40, 0x37, 0x63, 0x08, 0xbd, 0x82, 0x9a, 0x58, 0x4c, - 0x99, 0xbe, 0xd2, 0xad, 0xf4, 0xdb, 0x47, 0xbd, 0xc3, 0x74, 0x1e, 0x87, 0x45, 0xed, 0x43, 0xf9, - 0xeb, 0x2c, 0xa6, 0x8c, 0x48, 0x3e, 0x1a, 0x80, 0x96, 0x79, 0x79, 0x51, 0xf8, 0x31, 0x18, 0xeb, - 0xd5, 0x6e, 0xa5, 0xdf, 0x38, 0xda, 0x2f, 0xd1, 0x30, 0x25, 0x81, 0x6c, 0x7a, 0xc5, 0x00, 0x1a, - 0x82, 0x26, 0xa2, 0x1b, 0x16, 0xba, 0x53, 0x36, 0x9b, 0x04, 0x9c, 0x07, 0x51, 0xa8, 0xd7, 0xa4, - 0x4a, 0xd9, 0x4c, 0x9c, 0x98, 0x7a, 0xbe, 0x64, 0x92, 0x4d, 0x51, 0x0c, 0xa0, 0x37, 0xd0, 0xf2, - 0xa8, 0x60, 0xe3, 0x68, 0xb6, 0x70, 0x7d, 0x2a, 0xa8, 0xbe, 0x2a, 0xb5, 0x76, 0x73, 0x5a, 0x09, - 0x3c, 0xa0, 0x82, 0x92, 0xa6, 0x97, 0x1b, 0xa1, 0xd7, 0xd0, 0xf4, 0xae, 0x69, 0x18, 0xb2, 0x5b, - 0x95, 0xbb, 0x26, 0x73, 0x77, 0x72, 0xb9, 0x0a, 0x95, 0xa9, 0x0d, 0x2f, 0x1b, 0xa0, 0x3e, 0x68, - 0x13, 0x36, 0xb9, 0x62, 0x33, 0x57, 0x44, 0x2e, 0xf5, 0x44, 0x5c, 0xc5, 0x7a, 0xb7, 0xd2, 0xaf, - 0x93, 0xb6, 0x8a, 0x3b, 0x91, 0x21, 0xa3, 0xc8, 0x86, 0xa6, 0x8a, 0x70, 0xc3, 0xf7, 0x99, 0xaf, - 0x6f, 0x74, 0xab, 0xfd, 0xc6, 0xd1, 0x37, 0x0f, 0xae, 0xfa, 0x30, 0x47, 0xc6, 0xa1, 0x98, 0x2d, - 0x48, 0x21, 0x1f, 0xdd, 0xc2, 0xee, 0x8c, 0xfd, 0xca, 0x3c, 0xc1, 0x7c, 0xc2, 0x7e, 0x9b, 0x33, - 0x2e, 0xb8, 0x13, 0x9d, 0x46, 0x41, 0xa8, 0xd7, 0xa5, 0xf2, 0x0f, 0x0f, 0x2a, 0x93, 0xd2, 0x34, - 0xe5, 0xf1, 0x80, 0x66, 0xec, 0x46, 0x3d, 0x8f, 0x4d, 0xef, 0xbb, 0xc1, 0x67, 0xdc, 0x8c, 0xd2, - 0xb4, 0xc4, 0xad, 0x5c, 0x13, 0x9d, 0x40, 0x5b, 0x9d, 0x8d, 0x09, 0x13, 0x54, 0xee, 0x48, 0x43, - 0xee, 0x48, 0xf7, 0xa1, 0x93, 0x31, 0x4c, 0x78, 0xa4, 0x25, 0xf2, 0xc3, 0xce, 0x07, 0xd8, 0xba, - 0xb7, 0x8e, 0x48, 0x83, 0xea, 0x0d, 0x5b, 0xc8, 0x9b, 0x51, 0x27, 0xf1, 0x23, 0x7a, 0x09, 0xab, - 0x9f, 0xe8, 0xed, 0x5c, 0x5d, 0x85, 0xf2, 0x63, 0xac, 0x64, 0x88, 0xe2, 0xfd, 0xb8, 0xf2, 0xba, - 0xd2, 0xb9, 0x81, 0xa7, 0x8f, 0xac, 0x64, 0x89, 0xcb, 0xab, 0xa2, 0x4b, 0x59, 0x31, 0x89, 0x90, - 0xd2, 0xb9, 0x63, 0xf6, 0xc8, 0x42, 0xfe, 0xbf, 0x66, 0xbd, 0xbf, 0x6b, 0x50, 0x5f, 0x5e, 0x7a, - 0xd4, 0x80, 0xf5, 0x4b, 0xfb, 0xcc, 0x1e, 0xfd, 0x62, 0x6b, 0x5f, 0x20, 0x04, 0x6d, 0x73, 0x34, - 0x1c, 0x5e, 0xda, 0x96, 0xf3, 0xde, 0xc5, 0x03, 0xcb, 0xd1, 0x2a, 0xe8, 0x5b, 0xe8, 0x67, 0xb1, - 0x21, 0x1e, 0x1e, 0x63, 0xe2, 0x3a, 0xa3, 0x33, 0x6c, 0xbb, 0xe7, 0x98, 0x0c, 0xad, 0x8b, 0x0b, - 0x6b, 0x64, 0xbb, 0xe6, 0x5b, 0xc3, 0x3e, 0xc1, 0xda, 0xca, 0x7f, 0x63, 0x0f, 0xf0, 0x3b, 0xec, - 0x60, 0xad, 0x8a, 0x9e, 0xc3, 0x7e, 0xc6, 0x36, 0x0d, 0x07, 0x9f, 0x8c, 0xc8, 0x7b, 0xd7, 0x24, - 0xd8, 0x70, 0xb0, 0x56, 0x7b, 0x00, 0x4e, 0xb2, 0x57, 0xd1, 0x53, 0xd8, 0x2b, 0x81, 0xe5, 0xb4, - 0xd7, 0xd0, 0x33, 0xd0, 0x73, 0xe0, 0x5b, 0xc3, 0xb6, 0xf1, 0xbb, 0x54, 0x79, 0xbd, 0x1c, 0x4d, - 0x84, 0x37, 0x50, 0x07, 0x76, 0xef, 0xa3, 0x52, 0xb7, 0x8e, 0x0e, 0xa0, 0x53, 0x62, 0x4a, 0xf0, - 0x88, 0x0c, 0x30, 0xd1, 0xe0, 0xce, 0x9c, 0x93, 0xdc, 0x14, 0x6e, 0xa0, 0xaf, 0xa1, 0x9b, 0xc1, - 0x04, 0xff, 0x7c, 0x89, 0x2f, 0x1c, 0xd7, 0x19, 0xb9, 0xa7, 0x23, 0xcb, 0x76, 0x0d, 0xd3, 0xc4, - 0xe7, 0x8e, 0xd6, 0x7c, 0x9c, 0x45, 0xf0, 0x29, 0x36, 0x1d, 0xad, 0x85, 0xf6, 0x61, 0xe7, 0xde, - 0x5a, 0x9f, 0x59, 0xe6, 0x99, 0xd6, 0x46, 0x3a, 0x3c, 0xb9, 0x07, 0x1d, 0x1b, 0xb6, 0xb6, 0x59, - 0xac, 0x2d, 0x41, 0x2e, 0xed, 0x18, 0xd3, 0xd0, 0x1e, 0x6c, 0x67, 0x98, 0xda, 0x35, 0x63, 0x30, - 0xd0, 0xb6, 0x7a, 0x7f, 0xad, 0xc0, 0xe6, 0x9d, 0x57, 0x3e, 0x3a, 0x82, 0x8d, 0xb4, 0x97, 0xc9, - 0x93, 0x59, 0x7c, 0x1b, 0x5f, 0x53, 0x61, 0x25, 0x28, 0x59, 0xf2, 0xd0, 0x4f, 0xd0, 0xc8, 0xfa, - 0x01, 0x4f, 0x0e, 0xef, 0x41, 0xc9, 0xe1, 0xcd, 0x5e, 0xfd, 0x9c, 0xe4, 0x53, 0xe2, 0x77, 0x07, - 0xf5, 0x27, 0x41, 0xe8, 0x72, 0x26, 0x44, 0x10, 0x8e, 0x79, 0xd2, 0x9b, 0xca, 0x6e, 0x80, 0x11, - 0x13, 0x2f, 0x12, 0x1e, 0x69, 0xd1, 0xfc, 0x10, 0x7d, 0x05, 0xad, 0x20, 0x14, 0xb3, 0xc8, 0x9d, - 0x30, 0xce, 0xe9, 0x98, 0xc9, 0xee, 0x54, 0x27, 0x4d, 0x19, 0x1c, 0xaa, 0x58, 0x4c, 0x8a, 0xe6, - 0x79, 0xd2, 0xaa, 0x22, 0xc9, 0x60, 0x4a, 0x42, 0x50, 0x13, 0x74, 0xcc, 0xf5, 0xb5, 0x6e, 0xb5, - 0x5f, 0x27, 0xf2, 0xb9, 0xf7, 0x7b, 0x05, 0x9a, 0xf9, 0x8e, 0x84, 0xbe, 0x84, 0xc6, 0xb2, 0x81, - 0x05, 0x7e, 0x72, 0x95, 0x21, 0x0d, 0x59, 0x7e, 0xac, 0x12, 0xd2, 0x89, 0xba, 0xd0, 0x75, 0x22, - 0x9f, 0xd1, 0x8b, 0x65, 0xe3, 0xe2, 0x6e, 0xe0, 0xc7, 0xa5, 0xc6, 0x0e, 0x69, 0x87, 0xe2, 0x96, - 0xcf, 0x51, 0x07, 0x36, 0xa6, 0x11, 0x0f, 0x44, 0xda, 0x5f, 0x57, 0xc9, 0x72, 0xdc, 0xfb, 0xb3, - 0x02, 0x8d, 0x5c, 0x6b, 0xfb, 0xfc, 0x1c, 0x9e, 0x03, 0xa4, 0x8d, 0x32, 0xf0, 0x93, 0x99, 0xd4, - 0x93, 0x88, 0xe5, 0x17, 0xbc, 0xaa, 0x45, 0x2f, 0xf4, 0x1d, 0xac, 0x27, 0xc4, 0xa4, 0xcd, 0xef, - 0x95, 0x7d, 0x2c, 0x5c, 0x53, 0x41, 0x52, 0x5e, 0xcf, 0x86, 0x27, 0x17, 0xc1, 0x38, 0x64, 0xfe, - 0x9d, 0x8f, 0x9d, 0x67, 0x50, 0xe7, 0xc1, 0x38, 0xa4, 0x62, 0x3e, 0x63, 0x72, 0x92, 0x4d, 0x92, - 0x05, 0x90, 0x0e, 0xeb, 0x53, 0xba, 0xb8, 0x8d, 0xa8, 0x9a, 0x60, 0x93, 0xa4, 0xc3, 0xde, 0x3f, - 0x15, 0xd8, 0x2d, 0x4a, 0xf1, 0x74, 0x8b, 0xe2, 0x85, 0x5c, 0x7e, 0xd3, 0x24, 0xa5, 0x37, 0x49, - 0x63, 0x19, 0xb3, 0x7c, 0x64, 0xc1, 0x0b, 0xf9, 0x61, 0xc5, 0xdd, 0x2b, 0xca, 0x99, 0x9b, 0xd1, - 0x7d, 0xc6, 0xbd, 0x59, 0x30, 0x95, 0x55, 0x2b, 0xc7, 0x03, 0x45, 0x3c, 0xa6, 0x9c, 0x2d, 0xfd, - 0x06, 0x19, 0x0b, 0x75, 0x60, 0x4d, 0x31, 0xe4, 0x86, 0x35, 0x8f, 0x57, 0xf4, 0x0a, 0x49, 0x22, - 0xc8, 0x84, 0x16, 0x97, 0x45, 0xbb, 0x09, 0xa5, 0x26, 0x1b, 0x6c, 0xee, 0x0e, 0x94, 0xad, 0x09, - 0x69, 0xaa, 0x24, 0x55, 0xd5, 0x71, 0xeb, 0x43, 0xe3, 0xf0, 0xe5, 0x9b, 0x34, 0xe3, 0x6a, 0x4d, - 0x3e, 0x7d, 0xff, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x39, 0xf7, 0x01, 0xf5, 0x83, 0x0a, 0x00, - 0x00, + 0x05, 0xfd, 0x80, 0x7e, 0x43, 0xd1, 0xbf, 0xea, 0x6f, 0x14, 0x9c, 0x21, 0x45, 0xd2, 0xa6, 0x9c, + 0x2e, 0xba, 0x91, 0x38, 0xf7, 0x9c, 0x7b, 0xce, 0xdc, 0x79, 0xf0, 0x12, 0xf6, 0xdd, 0x70, 0x32, + 0x99, 0x07, 0xbe, 0x58, 0x38, 0xf3, 0xa9, 0x47, 0x05, 0x3b, 0x9e, 0xce, 0x42, 0x11, 0xa2, 0x2d, + 0xf9, 0x77, 0x3d, 0xff, 0xd8, 0xda, 0x75, 0x6f, 0xa8, 0x70, 0x7c, 0x8f, 0x05, 0xc2, 0x17, 0x0b, + 0x05, 0xb7, 0x76, 0x92, 0x34, 0x9f, 0x71, 0x15, 0xea, 0xfc, 0xd1, 0x80, 0xa6, 0x91, 0x88, 0xe1, + 0x4f, 0x2c, 0x10, 0xa8, 0x07, 0x7b, 0xa9, 0x3c, 0x8b, 0x42, 0x8e, 0x7b, 0x17, 0xba, 0xb7, 0x7a, + 0xa9, 0x5d, 0xea, 0x56, 0xc8, 0xae, 0x9b, 0xa3, 0x1b, 0x11, 0x84, 0x5e, 0x41, 0x45, 0x2c, 0xa6, + 0x4c, 0x5f, 0x6b, 0x97, 0xba, 0xcd, 0x5e, 0xe7, 0x38, 0x99, 0xc7, 0x71, 0x5e, 0xfb, 0x58, 0xfe, + 0xda, 0x8b, 0x29, 0x23, 0x92, 0x8f, 0x06, 0xa0, 0xa5, 0x5e, 0x6e, 0x18, 0x7c, 0xf4, 0xc7, 0x7a, + 0xb9, 0x5d, 0xea, 0xd6, 0x7a, 0x87, 0x05, 0x1a, 0x86, 0x24, 0x90, 0x6d, 0x37, 0x1f, 0x40, 0x43, + 0xd0, 0x44, 0x78, 0xcb, 0x02, 0x67, 0xca, 0x66, 0x13, 0x9f, 0x73, 0x3f, 0x0c, 0xf4, 0x8a, 0x54, + 0x29, 0x9a, 0x89, 0x1d, 0x51, 0x2f, 0x96, 0x4c, 0xb2, 0x2d, 0xf2, 0x01, 0xf4, 0x06, 0x1a, 0x2e, + 0x15, 0x6c, 0x1c, 0xce, 0x16, 0x8e, 0x47, 0x05, 0xd5, 0xd7, 0xa5, 0xd6, 0x7e, 0x46, 0x2b, 0x86, + 0x07, 0x54, 0x50, 0x52, 0x77, 0x33, 0x23, 0xf4, 0x1a, 0xea, 0xee, 0x0d, 0x0d, 0x02, 0x76, 0xa7, + 0x72, 0x37, 0x64, 0xee, 0x5e, 0x26, 0x57, 0xa1, 0x32, 0xb5, 0xe6, 0xa6, 0x03, 0xd4, 0x05, 0x6d, + 0xc2, 0x26, 0xd7, 0x6c, 0xe6, 0x88, 0xd0, 0xa1, 0xae, 0x88, 0xaa, 0xd8, 0x6c, 0x97, 0xba, 0x55, + 0xd2, 0x54, 0x71, 0x3b, 0xec, 0xcb, 0x28, 0xb2, 0xa0, 0xae, 0x22, 0xbc, 0xef, 0x79, 0xcc, 0xd3, + 0xb7, 0xda, 0xe5, 0x6e, 0xad, 0xf7, 0xcd, 0xca, 0x55, 0x1f, 0x66, 0xc8, 0x38, 0x10, 0xb3, 0x05, + 0xc9, 0xe5, 0xa3, 0x3b, 0xd8, 0x9f, 0xb1, 0x5f, 0x99, 0x2b, 0x98, 0x47, 0xd8, 0x6f, 0x73, 0xc6, + 0x05, 0xb7, 0xc3, 0xb3, 0xd0, 0x0f, 0xf4, 0xaa, 0x54, 0xfe, 0x61, 0xa5, 0x32, 0x29, 0x4c, 0x53, + 0x1e, 0x2b, 0x34, 0x23, 0x37, 0xea, 0xba, 0x6c, 0xfa, 0xd0, 0x0d, 0x3e, 0xe3, 0xd6, 0x2f, 0x4c, + 0x8b, 0xdd, 0x8a, 0x35, 0xd1, 0x29, 0x34, 0xd5, 0xd9, 0x98, 0x30, 0x41, 0xe5, 0x8e, 0xd4, 0xe4, + 0x8e, 0xb4, 0x57, 0x9d, 0x8c, 0x61, 0xcc, 0x23, 0x0d, 0x91, 0x1d, 0xb6, 0x3e, 0xc0, 0xce, 0x83, + 0x75, 0x44, 0x1a, 0x94, 0x6f, 0xd9, 0x42, 0xde, 0x8c, 0x2a, 0x89, 0x1e, 0xd1, 0x4b, 0x58, 0xff, + 0x44, 0xef, 0xe6, 0xea, 0x2a, 0x14, 0x1f, 0x63, 0x25, 0x43, 0x14, 0xef, 0xc7, 0xb5, 0xd7, 0xa5, + 0xd6, 0x2d, 0x3c, 0x7d, 0x64, 0x25, 0x0b, 0x5c, 0x5e, 0xe5, 0x5d, 0x8a, 0x8a, 0x89, 0x85, 0x94, + 0xce, 0x3d, 0xb3, 0x47, 0x16, 0xf2, 0xff, 0x35, 0xeb, 0xfc, 0x5d, 0x81, 0xea, 0xf2, 0xd2, 0xa3, + 0x1a, 0x6c, 0x5e, 0x59, 0xe7, 0xd6, 0xe8, 0x17, 0x4b, 0xfb, 0x02, 0x21, 0x68, 0x1a, 0xa3, 0xe1, + 0xf0, 0xca, 0x32, 0xed, 0xf7, 0x0e, 0x1e, 0x98, 0xb6, 0x56, 0x42, 0xdf, 0x42, 0x37, 0x8d, 0x0d, + 0xf1, 0xf0, 0x04, 0x13, 0xc7, 0x1e, 0x9d, 0x63, 0xcb, 0xb9, 0xc0, 0x64, 0x68, 0x5e, 0x5e, 0x9a, + 0x23, 0xcb, 0x31, 0xde, 0xf6, 0xad, 0x53, 0xac, 0xad, 0xfd, 0x37, 0xf6, 0x00, 0xbf, 0xc3, 0x36, + 0xd6, 0xca, 0xe8, 0x39, 0x1c, 0xa6, 0x6c, 0xa3, 0x6f, 0xe3, 0xd3, 0x11, 0x79, 0xef, 0x18, 0x04, + 0xf7, 0x6d, 0xac, 0x55, 0x56, 0xc0, 0x71, 0xf6, 0x3a, 0x7a, 0x0a, 0x07, 0x05, 0xb0, 0x9c, 0xf6, + 0x06, 0x7a, 0x06, 0x7a, 0x06, 0x7c, 0xdb, 0xb7, 0x2c, 0xfc, 0x2e, 0x51, 0xde, 0x2c, 0x46, 0x63, + 0xe1, 0x2d, 0xd4, 0x82, 0xfd, 0x87, 0xa8, 0xd4, 0xad, 0xa2, 0x23, 0x68, 0x15, 0x98, 0x12, 0x3c, + 0x22, 0x03, 0x4c, 0x34, 0xb8, 0x37, 0xe7, 0x38, 0x37, 0x81, 0x6b, 0xe8, 0x6b, 0x68, 0xa7, 0x30, + 0xc1, 0x3f, 0x5f, 0xe1, 0x4b, 0xdb, 0xb1, 0x47, 0xce, 0xd9, 0xc8, 0xb4, 0x9c, 0xbe, 0x61, 0xe0, + 0x0b, 0x5b, 0xab, 0x3f, 0xce, 0x22, 0xf8, 0x0c, 0x1b, 0xb6, 0xd6, 0x40, 0x87, 0xb0, 0xf7, 0x60, + 0xad, 0xcf, 0x4d, 0xe3, 0x5c, 0x6b, 0x22, 0x1d, 0x9e, 0x3c, 0x80, 0x4e, 0xfa, 0x96, 0xb6, 0x9d, + 0xaf, 0x2d, 0x46, 0xae, 0xac, 0x08, 0xd3, 0xd0, 0x01, 0xec, 0xa6, 0x98, 0xda, 0xb5, 0xfe, 0x60, + 0xa0, 0xed, 0x74, 0xfe, 0x5a, 0x83, 0xed, 0x7b, 0xaf, 0x7c, 0xd4, 0x83, 0xad, 0xa4, 0x97, 0xc9, + 0x93, 0x99, 0x7f, 0x1b, 0xdf, 0x50, 0x61, 0xc6, 0x28, 0x59, 0xf2, 0xd0, 0x4f, 0x50, 0x4b, 0xfb, + 0x01, 0x8f, 0x0f, 0xef, 0x51, 0xc1, 0xe1, 0x4d, 0x5f, 0xfd, 0x9c, 0x64, 0x53, 0xa2, 0x77, 0x07, + 0xf5, 0x26, 0x7e, 0xe0, 0x70, 0x26, 0x84, 0x1f, 0x8c, 0x79, 0xdc, 0x9b, 0x8a, 0x6e, 0x40, 0x3f, + 0x22, 0x5e, 0xc6, 0x3c, 0xd2, 0xa0, 0xd9, 0x21, 0xfa, 0x0a, 0x1a, 0x7e, 0x20, 0x66, 0xa1, 0x33, + 0x61, 0x9c, 0xd3, 0x31, 0x93, 0xdd, 0xa9, 0x4a, 0xea, 0x32, 0x38, 0x54, 0xb1, 0x88, 0x14, 0xce, + 0xb3, 0xa4, 0x75, 0x45, 0x92, 0xc1, 0x84, 0x84, 0xa0, 0x22, 0xe8, 0x98, 0xeb, 0x1b, 0xed, 0x72, + 0xb7, 0x4a, 0xe4, 0x73, 0xe7, 0xf7, 0x12, 0xd4, 0xb3, 0x1d, 0x09, 0x7d, 0x09, 0xb5, 0x65, 0x03, + 0xf3, 0xbd, 0xf8, 0x2a, 0x43, 0x12, 0x32, 0xbd, 0x48, 0x25, 0xa0, 0x13, 0x75, 0xa1, 0xab, 0x44, + 0x3e, 0xa3, 0x17, 0xcb, 0xc6, 0xc5, 0x1d, 0xdf, 0x8b, 0x4a, 0x8d, 0x1c, 0x92, 0x0e, 0xc5, 0x4d, + 0x8f, 0xa3, 0x16, 0x6c, 0x4d, 0x43, 0xee, 0x8b, 0xa4, 0xbf, 0xae, 0x93, 0xe5, 0xb8, 0xf3, 0x67, + 0x09, 0x6a, 0x99, 0xd6, 0xf6, 0xf9, 0x39, 0x3c, 0x07, 0x48, 0x1a, 0xa5, 0xef, 0xc5, 0x33, 0xa9, + 0xc6, 0x11, 0xd3, 0xcb, 0x79, 0x95, 0xf3, 0x5e, 0xe8, 0x3b, 0xd8, 0x8c, 0x89, 0x71, 0x9b, 0x3f, + 0x28, 0xfa, 0x58, 0xb8, 0xa1, 0x82, 0x24, 0xbc, 0x8e, 0x05, 0x4f, 0x2e, 0xfd, 0x71, 0xc0, 0xbc, + 0x7b, 0x1f, 0x3b, 0xcf, 0xa0, 0xca, 0xfd, 0x71, 0x40, 0xc5, 0x7c, 0xc6, 0xe4, 0x24, 0xeb, 0x24, + 0x0d, 0x20, 0x1d, 0x36, 0xa7, 0x74, 0x71, 0x17, 0x52, 0x35, 0xc1, 0x3a, 0x49, 0x86, 0x9d, 0x7f, + 0x4a, 0xb0, 0x9f, 0x97, 0xe2, 0xc9, 0x16, 0x45, 0x0b, 0xb9, 0xfc, 0xa6, 0x89, 0x4b, 0xaf, 0x93, + 0xda, 0x32, 0x66, 0x7a, 0xc8, 0x84, 0x17, 0xf2, 0xc3, 0x8a, 0x3b, 0xd7, 0x94, 0x33, 0x27, 0xa5, + 0x7b, 0x8c, 0xbb, 0x33, 0x7f, 0x2a, 0xab, 0x56, 0x8e, 0x47, 0x8a, 0x78, 0x42, 0x39, 0x5b, 0xfa, + 0x0d, 0x52, 0x16, 0x6a, 0xc1, 0x86, 0x62, 0xc8, 0x0d, 0xab, 0x9f, 0xac, 0xe9, 0x25, 0x12, 0x47, + 0x90, 0x01, 0x0d, 0x2e, 0x8b, 0x76, 0x62, 0x4a, 0x45, 0x36, 0xd8, 0xcc, 0x1d, 0x28, 0x5a, 0x13, + 0x52, 0x57, 0x49, 0xaa, 0xaa, 0x8e, 0x0d, 0x47, 0xc5, 0x85, 0x26, 0x1d, 0x0b, 0xf5, 0xa0, 0x3c, + 0xe1, 0xe3, 0xf8, 0x5e, 0xb6, 0x57, 0x75, 0xef, 0x65, 0x5a, 0x44, 0x3e, 0x69, 0x7c, 0xa8, 0x1d, + 0xbf, 0x7c, 0x93, 0x50, 0xaf, 0x37, 0xe4, 0xd3, 0xf7, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x92, + 0x1f, 0x8f, 0xf4, 0xd9, 0x0a, 0x00, 0x00, } diff --git a/protocol/protobuf/community_update.proto b/protocol/protobuf/community_update.proto index 36086bd61..892b87162 100644 --- a/protocol/protobuf/community_update.proto +++ b/protocol/protobuf/community_update.proto @@ -86,3 +86,7 @@ message CommunityEventsMessage { // A list of signed community events repeated SignedCommunityEvent signed_events = 4; } + +message CommunityEventsMessageRejected { + CommunityEventsMessage msg = 1; +} diff --git a/protocol/v1/status_message.go b/protocol/v1/status_message.go index 39d29f274..29327ca10 100644 --- a/protocol/v1/status_message.go +++ b/protocol/v1/status_message.go @@ -328,8 +328,10 @@ func (m *StatusMessage) HandleApplication() error { return m.unmarshalProtobufData(new(protobuf.SyncActivityCenterNotifications)) case protobuf.ApplicationMetadataMessage_SYNC_ACTIVITY_CENTER_NOTIFICATION_STATE: return m.unmarshalProtobufData(new(protobuf.SyncActivityCenterNotificationState)) - case protobuf.ApplicationMetadataMessage_COMMUNITY_ADMIN_MESSAGE: + case protobuf.ApplicationMetadataMessage_COMMUNITY_EVENTS_MESSAGE: return m.unmarshalProtobufData(new(protobuf.CommunityEventsMessage)) + case protobuf.ApplicationMetadataMessage_COMMUNITY_EVENTS_MESSAGE_REJECTED: + return m.unmarshalProtobufData(new(protobuf.CommunityEventsMessageRejected)) case protobuf.ApplicationMetadataMessage_SYNC_ACCOUNT_CUSTOMIZATION_COLOR: return m.unmarshalProtobufData(new(protobuf.SyncAccountCustomizationColor)) case protobuf.ApplicationMetadataMessage_SYNC_ACCOUNTS_POSITIONS: