chore: remove community invitations

This commit is contained in:
Patryk Osmaczko 2023-08-03 21:23:38 +02:00 committed by osmaczko
parent d5974dd52e
commit ce82a8c0e5
16 changed files with 263 additions and 1009 deletions

View File

@ -598,78 +598,6 @@ func (o *Community) DeleteChat(chatID string) (*CommunityChanges, error) {
return changes, nil return changes, nil
} }
func (o *Community) InviteUserToOrg(pk *ecdsa.PublicKey) (*protobuf.CommunityInvitation, error) {
o.mutex.Lock()
defer o.mutex.Unlock()
if !o.IsControlNode() {
return nil, ErrNotControlNode
}
_, err := o.AddMember(pk, []protobuf.CommunityMember_Roles{})
if err != nil {
return nil, err
}
response := &protobuf.CommunityInvitation{}
wrappedCommunity, err := o.toProtocolMessageBytes()
if err != nil {
return nil, err
}
response.WrappedCommunityDescription = wrappedCommunity
grant, err := o.buildGrant(pk, "")
if err != nil {
return nil, err
}
response.Grant = grant
response.PublicKey = crypto.CompressPubkey(pk)
return response, nil
}
func (o *Community) InviteUserToChat(pk *ecdsa.PublicKey, chatID string) (*protobuf.CommunityInvitation, error) {
o.mutex.Lock()
defer o.mutex.Unlock()
if !o.IsControlNode() {
return nil, ErrNotControlNode
}
memberKey := common.PubkeyToHex(pk)
if _, ok := o.config.CommunityDescription.Members[memberKey]; !ok {
o.config.CommunityDescription.Members[memberKey] = &protobuf.CommunityMember{}
}
chat, ok := o.config.CommunityDescription.Chats[chatID]
if !ok {
return nil, ErrChatNotFound
}
if chat.Members == nil {
chat.Members = make(map[string]*protobuf.CommunityMember)
}
chat.Members[memberKey] = &protobuf.CommunityMember{}
o.increaseClock()
response := &protobuf.CommunityInvitation{}
wrappedCommunity, err := o.toProtocolMessageBytes()
if err != nil {
return nil, err
}
response.WrappedCommunityDescription = wrappedCommunity
grant, err := o.buildGrant(pk, chatID)
if err != nil {
return nil, err
}
response.Grant = grant
response.ChatId = chatID
return response, nil
}
func (o *Community) getMember(pk *ecdsa.PublicKey) *protobuf.CommunityMember { func (o *Community) getMember(pk *ecdsa.PublicKey) *protobuf.CommunityMember {
key := common.PubkeyToHex(pk) key := common.PubkeyToHex(pk)

View File

@ -100,49 +100,6 @@ func (s *CommunitySuite) TestHasPermission() {
} }
func (s *CommunitySuite) TestInviteUserToOrg() {
newMember, err := crypto.GenerateKey()
s.Require().NoError(err)
org := s.buildCommunity(&s.identity.PublicKey)
org.config.PrivateKey = nil
org.config.ID = nil
// Not an admin
_, err = org.InviteUserToOrg(&s.member2.PublicKey)
s.Require().Equal(ErrNotControlNode, err)
// Add admin to community
org.config.PrivateKey = s.identity
org.config.ID = &s.identity.PublicKey
response, err := org.InviteUserToOrg(&newMember.PublicKey)
s.Require().Nil(err)
s.Require().NotNil(response)
// Check member has been added
s.Require().True(org.HasMember(&newMember.PublicKey))
// Check member has been added to response
s.Require().NotNil(response.WrappedCommunityDescription)
metadata := &protobuf.ApplicationMetadataMessage{}
description := &protobuf.CommunityDescription{}
s.Require().NoError(proto.Unmarshal(response.WrappedCommunityDescription, metadata))
s.Require().NoError(proto.Unmarshal(metadata.Payload, description))
_, ok := description.Members[common.PubkeyToHex(&newMember.PublicKey)]
s.Require().True(ok)
// Check grant validates
s.Require().NotNil(org.config.ID)
s.Require().NotNil(response.Grant)
grant, err := org.VerifyGrantSignature(response.Grant)
s.Require().NoError(err)
s.Require().NotNil(grant)
}
func (s *CommunitySuite) TestCreateChat() { func (s *CommunitySuite) TestCreateChat() {
newChatID := "new-chat-id" newChatID := "new-chat-id"
org := s.buildCommunity(&s.identity.PublicKey) org := s.buildCommunity(&s.identity.PublicKey)
@ -275,56 +232,6 @@ func (s *CommunitySuite) TestDeleteChat() {
s.Require().Equal(uint64(2), org.Clock()) s.Require().Equal(uint64(2), org.Clock())
} }
func (s *CommunitySuite) TestInviteUserToChat() {
newMember, err := crypto.GenerateKey()
s.Require().NoError(err)
org := s.buildCommunity(&s.identity.PublicKey)
org.config.PrivateKey = nil
org.config.ID = nil
// Not an admin
_, err = org.InviteUserToChat(&s.member2.PublicKey, testChatID1)
s.Require().Equal(ErrNotControlNode, err)
// Add admin to community
org.config.PrivateKey = s.identity
org.config.ID = &s.identity.PublicKey
response, err := org.InviteUserToChat(&newMember.PublicKey, testChatID1)
s.Require().Nil(err)
s.Require().NotNil(response)
// Check member has been added
s.Require().True(org.HasMember(&newMember.PublicKey))
s.Require().True(org.IsMemberInChat(&newMember.PublicKey, testChatID1))
// Check member has been added to response
s.Require().NotNil(response.WrappedCommunityDescription)
metadata := &protobuf.ApplicationMetadataMessage{}
description := &protobuf.CommunityDescription{}
s.Require().NoError(proto.Unmarshal(response.WrappedCommunityDescription, metadata))
s.Require().NoError(proto.Unmarshal(metadata.Payload, description))
_, ok := description.Members[common.PubkeyToHex(&newMember.PublicKey)]
s.Require().True(ok)
_, ok = description.Chats[testChatID1].Members[common.PubkeyToHex(&newMember.PublicKey)]
s.Require().True(ok)
s.Require().Equal(testChatID1, response.ChatId)
// Check grant validates
s.Require().NotNil(org.config.ID)
s.Require().NotNil(response.Grant)
grant, err := org.VerifyGrantSignature(response.Grant)
s.Require().NoError(err)
s.Require().NotNil(grant)
s.Require().Equal(testChatID1, grant.ChatId)
}
func (s *CommunitySuite) TestRemoveUserFromChat() { func (s *CommunitySuite) TestRemoveUserFromChat() {
org := s.buildCommunity(&s.identity.PublicKey) org := s.buildCommunity(&s.identity.PublicKey)
org.config.PrivateKey = nil org.config.PrivateKey = nil

View File

@ -277,7 +277,6 @@ func (md archiveMDSlice) Less(i, j int) bool {
type Subscription struct { type Subscription struct {
Community *Community Community *Community
Invitations []*protobuf.CommunityInvitation
CreatingHistoryArchivesSignal *signal.CreatingHistoryArchivesSignal CreatingHistoryArchivesSignal *signal.CreatingHistoryArchivesSignal
HistoryArchivesCreatedSignal *signal.HistoryArchivesCreatedSignal HistoryArchivesCreatedSignal *signal.HistoryArchivesCreatedSignal
NoHistoryArchivesCreatedSignal *signal.NoHistoryArchivesCreatedSignal NoHistoryArchivesCreatedSignal *signal.NoHistoryArchivesCreatedSignal
@ -1418,21 +1417,6 @@ func (m *Manager) handleAdditionalAdminChanges(community *Community) error {
return nil return nil
} }
// TODO: This is not fully implemented, we want to save the grant passed at
// this stage and make sure it's used when publishing.
func (m *Manager) HandleCommunityInvitation(signer *ecdsa.PublicKey, invitation *protobuf.CommunityInvitation, payload []byte) (*CommunityResponse, error) {
m.logger.Debug("Handling wrapped community description message")
community, err := m.HandleWrappedCommunityDescriptionMessage(payload)
if err != nil {
return nil, err
}
// Save grant
return community, nil
}
// markRequestToJoin marks all the pending requests to join as completed // markRequestToJoin marks all the pending requests to join as completed
// if we are members // if we are members
func (m *Manager) markRequestToJoin(pk *ecdsa.PublicKey, community *Community) error { func (m *Manager) markRequestToJoin(pk *ecdsa.PublicKey, community *Community) error {
@ -2562,43 +2546,6 @@ func (m *Manager) LeaveCommunity(id types.HexBytes) (*Community, error) {
return community, nil return community, nil
} }
func (m *Manager) inviteUsersToCommunity(community *Community, pks []*ecdsa.PublicKey) (*Community, error) {
var invitations []*protobuf.CommunityInvitation
for _, pk := range pks {
invitation, err := community.InviteUserToOrg(pk)
if err != nil {
return nil, err
}
// We mark the user request (if any) as completed
if err := m.markRequestToJoin(pk, community); err != nil {
return nil, err
}
invitations = append(invitations, invitation)
}
err := m.persistence.SaveCommunity(community)
if err != nil {
return nil, err
}
m.publish(&Subscription{Community: community, Invitations: invitations})
return community, nil
}
func (m *Manager) InviteUsersToCommunity(communityID types.HexBytes, pks []*ecdsa.PublicKey) (*Community, error) {
community, err := m.GetByID(communityID)
if err != nil {
return nil, err
}
if community == nil {
return nil, ErrOrgNotFound
}
return m.inviteUsersToCommunity(community, pks)
}
func (m *Manager) AddMemberOwnerToCommunity(communityID types.HexBytes, pk *ecdsa.PublicKey) (*Community, error) { func (m *Manager) AddMemberOwnerToCommunity(communityID types.HexBytes, pk *ecdsa.PublicKey) (*Community, error) {
community, err := m.GetByID(communityID) community, err := m.GetByID(communityID)
if err != nil { if err != nil {

View File

@ -111,7 +111,16 @@ func createCommunity(s *suite.Suite, owner *Messenger) (*communities.Community,
s.Require().NoError(err) s.Require().NoError(err)
s.Require().NotNil(response) s.Require().NotNil(response)
s.Require().Len(response.Communities(), 1)
community := response.Communities()[0] community := response.Communities()[0]
s.Require().True(community.Joined())
s.Require().True(community.IsControlNode())
s.Require().Len(response.CommunitiesSettings(), 1)
communitySettings := response.CommunitiesSettings()[0]
s.Require().Equal(communitySettings.CommunityID, community.IDString())
s.Require().Equal(communitySettings.HistoryArchiveSupportEnabled, false)
orgChat := &protobuf.CommunityChat{ orgChat := &protobuf.CommunityChat{
Permissions: &protobuf.CommunityPermissions{ Permissions: &protobuf.CommunityPermissions{
Access: protobuf.CommunityPermissions_NO_MEMBERSHIP, Access: protobuf.CommunityPermissions_NO_MEMBERSHIP,

View File

@ -380,9 +380,8 @@ func (s *MessengerCommunitiesSuite) TestJoinCommunity() {
s.Require().Len(response.RemovedChats(), 3) s.Require().Len(response.RemovedChats(), 3)
} }
func (s *MessengerCommunitiesSuite) createCommunity() *communities.Community { func (s *MessengerCommunitiesSuite) createCommunity() (*communities.Community, *Chat) {
community, _ := createCommunity(&s.Suite, s.admin) return createCommunity(&s.Suite, s.admin)
return community
} }
func (s *MessengerCommunitiesSuite) advertiseCommunityTo(community *communities.Community, user *Messenger) { func (s *MessengerCommunitiesSuite) advertiseCommunityTo(community *communities.Community, user *Messenger) {
@ -404,7 +403,7 @@ func (s *MessengerCommunitiesSuite) TestCommunityContactCodeAdvertisement() {
s.Require().NoError(err) s.Require().NoError(err)
// create community and make bob and alice join to it // create community and make bob and alice join to it
community := s.createCommunity() community, _ := s.createCommunity()
s.advertiseCommunityTo(community, s.bob) s.advertiseCommunityTo(community, s.bob)
s.advertiseCommunityTo(community, s.alice) s.advertiseCommunityTo(community, s.alice)
@ -437,152 +436,27 @@ func (s *MessengerCommunitiesSuite) TestCommunityContactCodeAdvertisement() {
s.Require().NoError(err) s.Require().NoError(err)
} }
func (s *MessengerCommunitiesSuite) TestInviteUsersToCommunity() {
description := &requests.CreateCommunity{
Membership: protobuf.CommunityPermissions_NO_MEMBERSHIP,
Name: "status",
Color: "#ffffff",
Description: "status community description",
}
// Create an community chat
response, err := s.bob.CreateCommunity(description, true)
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Communities(), 1)
s.Require().True(response.Communities()[0].HasMember(&s.bob.identity.PublicKey))
s.Require().True(response.Communities()[0].IsMemberOwner(&s.bob.identity.PublicKey))
community := response.Communities()[0]
response, err = s.bob.InviteUsersToCommunity(
&requests.InviteUsersToCommunity{
CommunityID: community.ID(),
Users: []types.HexBytes{common.PubkeyToHexBytes(&s.alice.identity.PublicKey)},
},
)
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Communities(), 1)
community = response.Communities()[0]
s.Require().True(community.HasMember(&s.alice.identity.PublicKey))
// Pull message and make sure org is received
err = tt.RetryWithBackOff(func() error {
response, err = s.alice.RetrieveAll()
if err != nil {
return err
}
if len(response.Communities()) == 0 {
return errors.New("community not received")
}
return nil
})
s.Require().NoError(err)
communities, err := s.alice.Communities()
s.Require().NoError(err)
s.Require().Len(communities, 2)
s.Require().Len(response.Communities(), 1)
community = response.Communities()[0]
s.Require().True(community.HasMember(&s.alice.identity.PublicKey))
}
func (s *MessengerCommunitiesSuite) TestPostToCommunityChat() { func (s *MessengerCommunitiesSuite) TestPostToCommunityChat() {
description := &requests.CreateCommunity{ community, chat := s.createCommunity()
Membership: protobuf.CommunityPermissions_INVITATION_ONLY,
Name: "status",
Color: "#ffffff",
Description: "status community description",
}
// Create an community chat s.advertiseCommunityTo(community, s.alice)
response, err := s.bob.CreateCommunity(description, true) s.joinCommunity(community, s.alice)
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Communities(), 1)
s.Require().Len(response.Communities()[0].Chats(), 1)
s.Require().Len(response.Chats(), 1)
community := response.Communities()[0]
// Create chat
orgChat := &protobuf.CommunityChat{
Permissions: &protobuf.CommunityPermissions{
Access: protobuf.CommunityPermissions_NO_MEMBERSHIP,
},
Identity: &protobuf.ChatIdentity{
DisplayName: "status-core",
Description: "status-core community chat",
},
}
response, err = s.bob.CreateCommunityChat(community.ID(), orgChat)
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Communities(), 1)
s.Require().Len(response.Communities()[0].Chats(), 2)
s.Require().Len(response.Chats(), 1)
response, err = s.bob.InviteUsersToCommunity(
&requests.InviteUsersToCommunity{
CommunityID: community.ID(),
Users: []types.HexBytes{common.PubkeyToHexBytes(&s.alice.identity.PublicKey)},
},
)
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Communities(), 1)
community = response.Communities()[0]
s.Require().True(community.HasMember(&s.alice.identity.PublicKey))
// Pull message and make sure org is received
err = tt.RetryWithBackOff(func() error {
response, err = s.alice.RetrieveAll()
if err != nil {
return err
}
if len(response.Communities()) == 0 {
return errors.New("community not received")
}
return nil
})
s.Require().NoError(err)
communities, err := s.alice.Communities()
s.Require().NoError(err)
s.Require().Len(communities, 2)
s.Require().Len(response.Communities(), 1)
communityID := response.Communities()[0].ID()
s.Require().Equal(communityID, community.ID())
ctx := context.Background() ctx := context.Background()
// We join the org chatID := chat.ID
response, err = s.alice.JoinCommunity(ctx, community.ID(), false)
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Communities(), 1)
s.Require().Len(response.Communities()[0].Chats(), 2)
s.Require().True(response.Communities()[0].Joined())
s.Require().Len(response.Chats(), 2)
chatID := response.Chats()[1].ID
inputMessage := &common.Message{} inputMessage := &common.Message{}
inputMessage.ChatId = chatID inputMessage.ChatId = chatID
inputMessage.ContentType = protobuf.ChatMessage_TEXT_PLAIN inputMessage.ContentType = protobuf.ChatMessage_TEXT_PLAIN
inputMessage.Text = "some text" inputMessage.Text = "some text"
_, err = s.alice.SendChatMessage(ctx, inputMessage) _, err := s.alice.SendChatMessage(ctx, inputMessage)
s.Require().NoError(err) s.Require().NoError(err)
var response *MessengerResponse
// Pull message and make sure org is received // Pull message and make sure org is received
err = tt.RetryWithBackOff(func() error { err = tt.RetryWithBackOff(func() error {
response, err = s.bob.RetrieveAll() response, err = s.admin.RetrieveAll()
if err != nil { if err != nil {
return err return err
} }
@ -613,27 +487,7 @@ func (s *MessengerCommunitiesSuite) TestPostToCommunityChat() {
func (s *MessengerCommunitiesSuite) TestImportCommunity() { func (s *MessengerCommunitiesSuite) TestImportCommunity() {
ctx := context.Background() ctx := context.Background()
description := &requests.CreateCommunity{ community, _ := s.createCommunity()
Membership: protobuf.CommunityPermissions_NO_MEMBERSHIP,
Name: "status",
Color: "#ffffff",
Description: "status community description",
}
// Create an community chat
response, err := s.bob.CreateCommunity(description, true)
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Communities(), 1)
s.Require().Len(response.CommunitiesSettings(), 1)
s.Require().True(response.Communities()[0].Joined())
s.Require().True(response.Communities()[0].IsControlNode())
community := response.Communities()[0]
communitySettings := response.CommunitiesSettings()[0]
s.Require().Equal(communitySettings.CommunityID, community.IDString())
s.Require().Equal(communitySettings.HistoryArchiveSupportEnabled, false)
category := &requests.CreateCommunityCategory{ category := &requests.CreateCommunityCategory{
CommunityID: community.ID(), CommunityID: community.ID(),
@ -641,27 +495,19 @@ func (s *MessengerCommunitiesSuite) TestImportCommunity() {
ChatIDs: []string{}, ChatIDs: []string{},
} }
response, err = s.bob.CreateCommunityCategory(category) response, err := s.admin.CreateCommunityCategory(category)
s.Require().NoError(err) s.Require().NoError(err)
community = response.Communities()[0] community = response.Communities()[0]
privateKey, err := s.bob.ExportCommunity(community.ID()) privateKey, err := s.admin.ExportCommunity(community.ID())
s.Require().NoError(err) s.Require().NoError(err)
_, err = s.alice.ImportCommunity(ctx, privateKey) _, err = s.alice.ImportCommunity(ctx, privateKey)
s.Require().NoError(err) s.Require().NoError(err)
// Invite user on bob side // Invite user on admin side
newUser, err := crypto.GenerateKey() s.advertiseCommunityTo(community, s.bob)
s.Require().NoError(err) s.joinCommunity(community, s.bob)
_, err = s.bob.InviteUsersToCommunity(
&requests.InviteUsersToCommunity{
CommunityID: community.ID(),
Users: []types.HexBytes{common.PubkeyToHexBytes(&newUser.PublicKey)},
},
)
s.Require().NoError(err)
// Pull message and make sure org is received // Pull message and make sure org is received
err = tt.RetryWithBackOff(func() error { err = tt.RetryWithBackOff(func() error {
@ -2083,7 +1929,7 @@ func (s *MessengerCommunitiesSuite) TestDeclineAccess() {
} }
func (s *MessengerCommunitiesSuite) TestLeaveAndRejoinCommunity() { func (s *MessengerCommunitiesSuite) TestLeaveAndRejoinCommunity() {
community := s.createCommunity() community, _ := s.createCommunity()
s.advertiseCommunityTo(community, s.alice) s.advertiseCommunityTo(community, s.alice)
s.advertiseCommunityTo(community, s.bob) s.advertiseCommunityTo(community, s.bob)
@ -2224,35 +2070,12 @@ func (s *MessengerCommunitiesSuite) TestShareCommunity() {
} }
func (s *MessengerCommunitiesSuite) TestBanUser() { func (s *MessengerCommunitiesSuite) TestBanUser() {
description := &requests.CreateCommunity{ community, _ := s.createCommunity()
Membership: protobuf.CommunityPermissions_NO_MEMBERSHIP,
Name: "status",
Color: "#ffffff",
Description: "status community description",
}
// Create an community chat s.advertiseCommunityTo(community, s.alice)
response, err := s.bob.CreateCommunity(description, true) s.joinCommunity(community, s.alice)
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Communities(), 1)
community := response.Communities()[0] response, err := s.admin.BanUserFromCommunity(
response, err = s.bob.InviteUsersToCommunity(
&requests.InviteUsersToCommunity{
CommunityID: community.ID(),
Users: []types.HexBytes{common.PubkeyToHexBytes(&s.alice.identity.PublicKey)},
},
)
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Communities(), 1)
community = response.Communities()[0]
s.Require().True(community.HasMember(&s.alice.identity.PublicKey))
response, err = s.bob.BanUserFromCommunity(
&requests.BanUserFromCommunity{ &requests.BanUserFromCommunity{
CommunityID: community.ID(), CommunityID: community.ID(),
User: common.PubkeyToHexBytes(&s.alice.identity.PublicKey), User: common.PubkeyToHexBytes(&s.alice.identity.PublicKey),
@ -2266,7 +2089,7 @@ func (s *MessengerCommunitiesSuite) TestBanUser() {
s.Require().False(community.HasMember(&s.alice.identity.PublicKey)) s.Require().False(community.HasMember(&s.alice.identity.PublicKey))
s.Require().True(community.IsBanned(&s.alice.identity.PublicKey)) s.Require().True(community.IsBanned(&s.alice.identity.PublicKey))
response, err = s.bob.UnbanUserFromCommunity( response, err = s.admin.UnbanUserFromCommunity(
&requests.UnbanUserFromCommunity{ &requests.UnbanUserFromCommunity{
CommunityID: community.ID(), CommunityID: community.ID(),
User: common.PubkeyToHexBytes(&s.alice.identity.PublicKey), User: common.PubkeyToHexBytes(&s.alice.identity.PublicKey),
@ -3211,36 +3034,13 @@ func (s *MessengerCommunitiesSuite) TestExtractDiscordChannelsAndCategories_With
s.Require().Len(errs, 1) s.Require().Len(errs, 1)
} }
func (s *MessengerCommunitiesSuite) TestCommunityBanUserRequesToJoin() { func (s *MessengerCommunitiesSuite) TestCommunityBanUserRequestToJoin() {
description := &requests.CreateCommunity{ community, _ := s.createCommunity()
Membership: protobuf.CommunityPermissions_NO_MEMBERSHIP,
Name: "status",
Color: "#ffffff",
Description: "status community description",
}
// Create an community chat s.advertiseCommunityTo(community, s.alice)
response, err := s.bob.CreateCommunity(description, true) s.joinCommunity(community, s.alice)
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Communities(), 1)
community := response.Communities()[0] response, err := s.admin.BanUserFromCommunity(
response, err = s.bob.InviteUsersToCommunity(
&requests.InviteUsersToCommunity{
CommunityID: community.ID(),
Users: []types.HexBytes{common.PubkeyToHexBytes(&s.alice.identity.PublicKey)},
},
)
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Communities(), 1)
community = response.Communities()[0]
s.Require().True(community.HasMember(&s.alice.identity.PublicKey))
response, err = s.bob.BanUserFromCommunity(
&requests.BanUserFromCommunity{ &requests.BanUserFromCommunity{
CommunityID: community.ID(), CommunityID: community.ID(),
User: common.PubkeyToHexBytes(&s.alice.identity.PublicKey), User: common.PubkeyToHexBytes(&s.alice.identity.PublicKey),
@ -3282,98 +3082,21 @@ func (s *MessengerCommunitiesSuite) TestCommunityBanUserRequesToJoin() {
s.Require().NoError(err) s.Require().NoError(err)
messageState := s.bob.buildMessageState() messageState := s.admin.buildMessageState()
err = s.bob.HandleCommunityRequestToJoin(messageState, &s.alice.identity.PublicKey, *requestToJoinProto) err = s.admin.HandleCommunityRequestToJoin(messageState, &s.alice.identity.PublicKey, *requestToJoinProto)
s.Require().ErrorContains(err, "can't request access") s.Require().ErrorContains(err, "can't request access")
} }
func (s *MessengerCommunitiesSuite) TestHandleImport() { func (s *MessengerCommunitiesSuite) TestHandleImport() {
description := &requests.CreateCommunity{ community, chat := s.createCommunity()
Membership: protobuf.CommunityPermissions_INVITATION_ONLY,
Name: "status",
Color: "#ffffff",
Description: "status community description",
}
// Create a community s.advertiseCommunityTo(community, s.alice)
response, err := s.bob.CreateCommunity(description, true) s.joinCommunity(community, s.alice)
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Communities(), 1)
s.Require().Len(response.Communities()[0].Chats(), 1)
s.Require().Len(response.Chats(), 1)
community := response.Communities()[0]
// Create chat
orgChat := &protobuf.CommunityChat{
Permissions: &protobuf.CommunityPermissions{
Access: protobuf.CommunityPermissions_NO_MEMBERSHIP,
},
Identity: &protobuf.ChatIdentity{
DisplayName: "status-core",
Description: "status-core community chat",
},
}
response, err = s.bob.CreateCommunityChat(community.ID(), orgChat)
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Communities(), 1)
s.Require().Len(response.Communities()[0].Chats(), 2)
s.Require().Len(response.Chats(), 1)
response, err = s.bob.InviteUsersToCommunity(
&requests.InviteUsersToCommunity{
CommunityID: community.ID(),
Users: []types.HexBytes{common.PubkeyToHexBytes(&s.alice.identity.PublicKey)},
},
)
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Communities(), 1)
community = response.Communities()[0]
s.Require().True(community.HasMember(&s.alice.identity.PublicKey))
// Pull message and make sure org is received
err = tt.RetryWithBackOff(func() error {
response, err = s.alice.RetrieveAll()
if err != nil {
return err
}
if len(response.Communities()) == 0 {
return errors.New("community not received")
}
return nil
})
s.Require().NoError(err)
communities, err := s.alice.Communities()
s.Require().NoError(err)
s.Require().Len(communities, 2)
s.Require().Len(response.Communities(), 1)
communityID := response.Communities()[0].ID()
s.Require().Equal(communityID, community.ID())
ctx := context.Background()
// We join the org
response, err = s.alice.JoinCommunity(ctx, community.ID(), false)
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Communities(), 1)
s.Require().Len(response.Communities()[0].Chats(), 2)
s.Require().True(response.Communities()[0].Joined())
s.Require().Len(response.Chats(), 2)
chatID := response.Chats()[1].ID
// Check that there are no messages in the chat at first // Check that there are no messages in the chat at first
chat, err := s.alice.persistence.Chat(chatID) chat, err := s.alice.persistence.Chat(chat.ID)
s.Require().NoError(err) s.Require().NoError(err)
s.Require().NotNil(chat) s.Require().NotNil(chat)
s.Require().Equal(0, int(chat.UnviewedMessagesCount)) s.Require().Equal(0, int(chat.UnviewedMessagesCount))
@ -3381,7 +3104,7 @@ func (s *MessengerCommunitiesSuite) TestHandleImport() {
// Create an message that will be imported // Create an message that will be imported
testMessage := protobuf.ChatMessage{ testMessage := protobuf.ChatMessage{
Text: "abc123", Text: "abc123",
ChatId: chatID, ChatId: chat.ID,
ContentType: protobuf.ChatMessage_TEXT_PLAIN, ContentType: protobuf.ChatMessage_TEXT_PLAIN,
MessageType: protobuf.MessageType_COMMUNITY_CHAT, MessageType: protobuf.MessageType_COMMUNITY_CHAT,
Clock: 1, Clock: 1,
@ -3392,15 +3115,15 @@ func (s *MessengerCommunitiesSuite) TestHandleImport() {
wrappedPayload, err := v1protocol.WrapMessageV1( wrappedPayload, err := v1protocol.WrapMessageV1(
encodedPayload, encodedPayload,
protobuf.ApplicationMetadataMessage_CHAT_MESSAGE, protobuf.ApplicationMetadataMessage_CHAT_MESSAGE,
s.bob.identity, s.admin.identity,
) )
s.Require().NoError(err) s.Require().NoError(err)
message := &types.Message{} message := &types.Message{}
message.Sig = crypto.FromECDSAPub(&s.bob.identity.PublicKey) message.Sig = crypto.FromECDSAPub(&s.admin.identity.PublicKey)
message.Payload = wrappedPayload message.Payload = wrappedPayload
filter := s.alice.transport.FilterByChatID(chatID) filter := s.alice.transport.FilterByChatID(chat.ID)
importedMessages := make(map[transport.Filter][]*types.Message, 0) importedMessages := make(map[transport.Filter][]*types.Message, 0)
importedMessages[*filter] = append(importedMessages[*filter], message) importedMessages[*filter] = append(importedMessages[*filter], message)
@ -3410,7 +3133,7 @@ func (s *MessengerCommunitiesSuite) TestHandleImport() {
s.Require().NoError(err) s.Require().NoError(err)
// Get the chat again and see that there is still no unread message because we don't count import messages // Get the chat again and see that there is still no unread message because we don't count import messages
chat, err = s.alice.persistence.Chat(chatID) chat, err = s.alice.persistence.Chat(chat.ID)
s.Require().NoError(err) s.Require().NoError(err)
s.Require().NotNil(chat) s.Require().NotNil(chat)
s.Require().Equal(0, int(chat.UnviewedMessagesCount)) s.Require().Equal(0, int(chat.UnviewedMessagesCount))

View File

@ -4329,16 +4329,6 @@ func (m *Messenger) handleRetrievedMessages(chatWithMessages map[transport.Filte
continue continue
} }
case protobuf.CommunityInvitation:
logger.Debug("Handling CommunityInvitation")
invitation := msg.ParsedMessage.Interface().(protobuf.CommunityInvitation)
m.outputToCSV(msg.TransportMessage.Timestamp, msg.ID, senderID, filter.Topic, filter.ChatID, msg.Type, invitation)
err = m.HandleCommunityInvitation(messageState, publicKey, invitation, invitation.WrappedCommunityDescription)
if err != nil {
logger.Warn("failed to handle CommunityInvitation", zap.Error(err))
allMessagesProcessed = false
continue
}
case protobuf.CommunityRequestToJoin: case protobuf.CommunityRequestToJoin:
logger.Debug("Handling CommunityRequestToJoin") logger.Debug("Handling CommunityRequestToJoin")
request := msg.ParsedMessage.Interface().(protobuf.CommunityRequestToJoin) request := msg.ParsedMessage.Interface().(protobuf.CommunityRequestToJoin)

View File

@ -83,29 +83,6 @@ func (m *Messenger) publishOrg(org *communities.Community) error {
return err return err
} }
func (m *Messenger) publishOrgInvitation(org *communities.Community, invitation *protobuf.CommunityInvitation) error {
m.logger.Debug("publishing org invitation", zap.String("org-id", org.IDString()), zap.Any("org", org))
pk, err := crypto.DecompressPubkey(invitation.PublicKey)
if err != nil {
return err
}
payload, err := proto.Marshal(invitation)
if err != nil {
return err
}
rawMessage := common.RawMessage{
Payload: payload,
Sender: org.PrivateKey(),
// we don't want to wrap in an encryption layer message
SkipProtocolLayer: true,
MessageType: protobuf.ApplicationMetadataMessage_COMMUNITY_INVITATION,
}
_, err = m.sender.SendPrivate(context.Background(), pk, &rawMessage)
return err
}
func (m *Messenger) publishCommunityEventsMessage(adminMessage *communities.CommunityEventsMessage) error { func (m *Messenger) publishCommunityEventsMessage(adminMessage *communities.CommunityEventsMessage) error {
adminPubkey := common.PubkeyToHex(&m.identity.PublicKey) adminPubkey := common.PubkeyToHex(&m.identity.PublicKey)
m.logger.Debug("publishing community admin event", zap.String("admin-id", adminPubkey), zap.Any("event", adminMessage)) m.logger.Debug("publishing community admin event", zap.String("admin-id", adminPubkey), zap.Any("event", adminMessage))
@ -268,13 +245,6 @@ func (m *Messenger) handleCommunitiesSubscription(c chan *communities.Subscripti
} }
if sub.Community != nil { if sub.Community != nil {
publishOrgAndDistributeEncryptionKeys(sub.Community) publishOrgAndDistributeEncryptionKeys(sub.Community)
for _, invitation := range sub.Invitations {
err := m.publishOrgInvitation(sub.Community, invitation)
if err != nil {
m.logger.Warn("failed to publish org invitation", zap.Error(err))
}
}
} }
if sub.CommunityEventsMessage != nil { if sub.CommunityEventsMessage != nil {
@ -1886,62 +1856,6 @@ func (m *Messenger) ImportCommunity(ctx context.Context, key *ecdsa.PrivateKey)
return response, nil return response, nil
} }
// Deprecated: Community invites are no longer sent to users.
// Instead, the community is just shared and access requests is required from users.
func (m *Messenger) InviteUsersToCommunity(request *requests.InviteUsersToCommunity) (*MessengerResponse, error) {
if err := request.Validate(); err != nil {
return nil, err
}
response := &MessengerResponse{}
var messages []*common.Message
var publicKeys []*ecdsa.PublicKey
community, err := m.communitiesManager.GetByID(request.CommunityID)
if err != nil {
return nil, err
}
for _, pkBytes := range request.Users {
publicKey, err := common.HexToPubkey(pkBytes.String())
if err != nil {
return nil, err
}
publicKeys = append(publicKeys, publicKey)
message := &common.Message{}
message.ChatId = pkBytes.String()
message.CommunityID = request.CommunityID.String()
message.Text = fmt.Sprintf("You have been invited to community %s", community.Name())
messages = append(messages, message)
r, err := m.CreateOneToOneChat(&requests.CreateOneToOneChat{ID: pkBytes})
if err != nil {
return nil, err
}
if err := response.Merge(r); err != nil {
return nil, err
}
}
community, err = m.communitiesManager.InviteUsersToCommunity(request.CommunityID, publicKeys)
if err != nil {
return nil, err
}
sendMessagesResponse, err := m.SendChatMessages(context.Background(), messages)
if err != nil {
return nil, err
}
if err := response.Merge(sendMessagesResponse); err != nil {
return nil, err
}
response.AddCommunity(community)
return response, nil
}
func (m *Messenger) GetCommunityByID(communityID types.HexBytes) (*communities.Community, error) { func (m *Messenger) GetCommunityByID(communityID types.HexBytes) (*communities.Community, error) {
return m.communitiesManager.GetByID(communityID) return m.communitiesManager.GetByID(communityID)
} }

View File

@ -70,8 +70,14 @@ func (s *MessengerDeleteMessageForEveryoneSuite) newMessenger() *Messenger {
func (s *MessengerDeleteMessageForEveryoneSuite) TestDeleteMessageForEveryone() { func (s *MessengerDeleteMessageForEveryoneSuite) TestDeleteMessageForEveryone() {
community := s.createCommunity() community := s.createCommunity()
communityChat := s.createCommunityChat(community) communityChat := s.createCommunityChat(community)
s.inviteAndJoin(community, s.moderator)
s.inviteAndJoin(community, s.bob) request := &requests.RequestToJoinCommunity{CommunityID: community.ID()}
advertiseCommunityTo(&s.Suite, community, s.admin, s.moderator)
joinCommunity(&s.Suite, community, s.admin, s.moderator, request)
advertiseCommunityTo(&s.Suite, community, s.admin, s.bob)
joinCommunity(&s.Suite, community, s.admin, s.bob, request)
response, err := s.admin.AddRoleToMember(&requests.AddRoleToMember{ response, err := s.admin.AddRoleToMember(&requests.AddRoleToMember{
CommunityID: community.ID(), CommunityID: community.ID(),
@ -158,35 +164,3 @@ func (s *MessengerDeleteMessageForEveryoneSuite) createCommunityChat(community *
s.Require().Len(response.Chats(), 1) s.Require().Len(response.Chats(), 1)
return response.Chats()[0] return response.Chats()[0]
} }
func (s *MessengerDeleteMessageForEveryoneSuite) inviteAndJoin(community *communities.Community, target *Messenger) {
response, err := s.admin.InviteUsersToCommunity(&requests.InviteUsersToCommunity{
CommunityID: community.ID(),
Users: []types.HexBytes{common.PubkeyToHexBytes(&target.identity.PublicKey)},
})
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Communities(), 1)
community = response.Communities()[0]
s.Require().True(community.HasMember(&target.identity.PublicKey))
_, err = WaitOnMessengerResponse(target, func(response *MessengerResponse) bool {
return len(response.Communities()) > 0
}, "community not received")
s.Require().NoError(err)
response, err = target.JoinCommunity(context.Background(), community.ID(), false)
s.Require().NoError(err)
s.Require().NotNil(response)
s.Require().Len(response.Communities(), 1)
s.Require().True(response.Communities()[0].Joined())
s.Require().Len(response.Chats(), 1)
s.Require().NoError(target.SaveChat(response.Chats()[0]))
_, err = WaitOnMessengerResponse(target, func(response *MessengerResponse) bool {
return len(response.Messages()) > 0
}, "message 'You have been invited to community' not received")
s.Require().NoError(err)
}

View File

@ -1158,33 +1158,6 @@ func (m *Messenger) HandlePairInstallation(state *ReceivedMessageState, message
return nil return nil
} }
// HandleCommunityInvitation handles an community invitation
func (m *Messenger) HandleCommunityInvitation(state *ReceivedMessageState, signer *ecdsa.PublicKey, invitation protobuf.CommunityInvitation, rawPayload []byte) error {
if invitation.PublicKey == nil {
return errors.New("invalid pubkey")
}
pk, err := crypto.DecompressPubkey(invitation.PublicKey)
if err != nil {
return err
}
if !common.IsPubKeyEqual(pk, &m.identity.PublicKey) {
return errors.New("invitation not for us")
}
communityResponse, err := m.communitiesManager.HandleCommunityInvitation(signer, &invitation, rawPayload)
if err != nil {
return err
}
community := communityResponse.Community
state.Response.AddCommunity(community)
state.Response.CommunityChanges = append(state.Response.CommunityChanges, communityResponse.Changes)
return nil
}
func (m *Messenger) HandleHistoryArchiveMagnetlinkMessage(state *ReceivedMessageState, communityPubKey *ecdsa.PublicKey, magnetlink string, clock uint64) error { func (m *Messenger) HandleHistoryArchiveMagnetlinkMessage(state *ReceivedMessageState, communityPubKey *ecdsa.PublicKey, magnetlink string, clock uint64) error {
id := types.HexBytes(crypto.CompressPubkey(communityPubKey)) id := types.HexBytes(crypto.CompressPubkey(communityPubKey))

View File

@ -49,7 +49,7 @@ const (
ApplicationMetadataMessage_GROUP_CHAT_INVITATION ApplicationMetadataMessage_Type = 23 ApplicationMetadataMessage_GROUP_CHAT_INVITATION ApplicationMetadataMessage_Type = 23
ApplicationMetadataMessage_CHAT_IDENTITY ApplicationMetadataMessage_Type = 24 ApplicationMetadataMessage_CHAT_IDENTITY ApplicationMetadataMessage_Type = 24
ApplicationMetadataMessage_COMMUNITY_DESCRIPTION ApplicationMetadataMessage_Type = 25 ApplicationMetadataMessage_COMMUNITY_DESCRIPTION ApplicationMetadataMessage_Type = 25
ApplicationMetadataMessage_COMMUNITY_INVITATION ApplicationMetadataMessage_Type = 26 ApplicationMetadataMessage_COMMUNITY_INVITATION ApplicationMetadataMessage_Type = 26 // Deprecated: Do not use.
ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_JOIN ApplicationMetadataMessage_Type = 27 ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_JOIN ApplicationMetadataMessage_Type = 27
ApplicationMetadataMessage_PIN_MESSAGE ApplicationMetadataMessage_Type = 28 ApplicationMetadataMessage_PIN_MESSAGE ApplicationMetadataMessage_Type = 28
ApplicationMetadataMessage_EDIT_MESSAGE ApplicationMetadataMessage_Type = 29 ApplicationMetadataMessage_EDIT_MESSAGE ApplicationMetadataMessage_Type = 29
@ -317,69 +317,69 @@ func init() {
} }
var fileDescriptor_ad09a6406fcf24c7 = []byte{ var fileDescriptor_ad09a6406fcf24c7 = []byte{
// 1010 bytes of a gzipped FileDescriptorProto // 1014 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x56, 0x6d, 0x73, 0x13, 0x37, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x56, 0x5d, 0x53, 0x5b, 0x37,
0x10, 0x6e, 0x20, 0x4d, 0x40, 0x79, 0xdb, 0x88, 0xbc, 0x38, 0xef, 0x89, 0x81, 0x10, 0xa0, 0x35, 0x10, 0x2d, 0x84, 0x02, 0x11, 0x5f, 0x42, 0xe1, 0xc3, 0x80, 0x01, 0xe3, 0x24, 0x84, 0x24, 0xad,
0x2d, 0xb4, 0x9d, 0xb6, 0x94, 0xb6, 0xb2, 0xb4, 0x89, 0x85, 0xef, 0xa4, 0x43, 0xd2, 0xb9, 0x63, 0xd3, 0x26, 0x6d, 0xa7, 0x6d, 0x9a, 0xb6, 0xb2, 0xb4, 0xd8, 0x8a, 0xef, 0x95, 0x6e, 0x24, 0x5d,
0xbe, 0x68, 0x4c, 0x71, 0x99, 0xcc, 0x00, 0xf1, 0x10, 0xf3, 0x21, 0xbf, 0xa0, 0xbf, 0xb7, 0xff, 0x77, 0x9c, 0x17, 0x8d, 0xd3, 0xb8, 0x19, 0x66, 0x92, 0xe0, 0x09, 0xce, 0x03, 0xbf, 0xa1, 0xbf,
0xa0, 0xa3, 0xb3, 0xef, 0xce, 0x49, 0x1c, 0xf2, 0x29, 0xf1, 0x3e, 0x8f, 0x56, 0xda, 0x67, 0x9f, 0xb7, 0xef, 0x1d, 0xdd, 0x4f, 0x03, 0x26, 0x3c, 0x81, 0xf7, 0x1c, 0xad, 0xb4, 0x67, 0xcf, 0xae,
0x5d, 0x9b, 0x54, 0x3b, 0xbd, 0xde, 0xfb, 0xe3, 0xbf, 0x3b, 0xfd, 0xe3, 0x93, 0x8f, 0xfe, 0x43, 0x8d, 0xea, 0xfd, 0xe1, 0xf0, 0xfd, 0xc9, 0xdf, 0xfd, 0xd1, 0xc9, 0xe9, 0x47, 0xf7, 0x61, 0x30,
0xb7, 0xdf, 0x79, 0xdb, 0xe9, 0x77, 0xfc, 0x87, 0xee, 0xe9, 0x69, 0xe7, 0x5d, 0xb7, 0xd6, 0xfb, 0xea, 0xbf, 0xed, 0x8f, 0xfa, 0xee, 0xc3, 0xe0, 0xec, 0xac, 0xff, 0x6e, 0xd0, 0x18, 0x7e, 0x3a,
0x74, 0xd2, 0x3f, 0xa1, 0xb7, 0xb2, 0x3f, 0x6f, 0x3e, 0xff, 0x53, 0xfd, 0x77, 0x91, 0xac, 0xb3, 0x1d, 0x9d, 0x92, 0xf9, 0xe4, 0xcf, 0x9b, 0xcf, 0xff, 0xd4, 0xff, 0x5d, 0x45, 0xdb, 0xb4, 0x3c,
0xf2, 0x40, 0x3c, 0xe4, 0xc7, 0x03, 0x3a, 0xdd, 0x24, 0xb7, 0x4f, 0x8f, 0xdf, 0x7d, 0xec, 0xf4, 0x10, 0x66, 0xfc, 0x30, 0xa5, 0x93, 0x2a, 0xba, 0x7d, 0x76, 0xf2, 0xee, 0x63, 0x7f, 0xf4, 0xf9,
0x3f, 0x7f, 0xea, 0x56, 0x26, 0x76, 0x27, 0x0e, 0x66, 0x4d, 0x19, 0xa0, 0x15, 0x32, 0xdd, 0xeb, 0xd3, 0xa0, 0x32, 0x55, 0x9b, 0x3a, 0x5a, 0xd4, 0x65, 0x80, 0x54, 0xd0, 0xdc, 0xb0, 0x7f, 0xfe,
0x9c, 0xbd, 0x3f, 0xe9, 0xbc, 0xad, 0xdc, 0xc8, 0xb0, 0xfc, 0x23, 0x7d, 0x41, 0x26, 0xfb, 0x67, 0xfe, 0xb4, 0xff, 0xb6, 0x32, 0x9d, 0x60, 0xf9, 0x47, 0xf2, 0x02, 0xcd, 0x8c, 0xce, 0x87, 0x83,
0xbd, 0x6e, 0xe5, 0xe6, 0xee, 0xc4, 0xc1, 0xfc, 0xd3, 0x87, 0xb5, 0xfc, 0xbe, 0xda, 0xd5, 0x77, 0xca, 0xad, 0xda, 0xd4, 0xd1, 0xf2, 0xd3, 0x87, 0x8d, 0xfc, 0xbe, 0xc6, 0xf5, 0x77, 0x35, 0xec,
0xd5, 0xdc, 0x59, 0xaf, 0x6b, 0xb2, 0x63, 0xd5, 0xff, 0x16, 0xc8, 0x64, 0xf8, 0x48, 0x67, 0xc8, 0xf9, 0x70, 0xa0, 0x93, 0x63, 0xf5, 0xff, 0x56, 0xd0, 0x8c, 0xff, 0x48, 0x16, 0xd0, 0x5c, 0x2c,
0x74, 0xaa, 0x9a, 0x4a, 0xff, 0xa5, 0xe0, 0x2b, 0x0a, 0x64, 0x96, 0x37, 0x98, 0xf3, 0x31, 0x5a, 0x3b, 0x52, 0xfd, 0x25, 0xf1, 0x57, 0x04, 0xa3, 0x45, 0xd6, 0xa6, 0xd6, 0x85, 0x60, 0x0c, 0x6d,
0xcb, 0x8e, 0x10, 0x26, 0x28, 0x25, 0xf3, 0x5c, 0x2b, 0xc7, 0xb8, 0xf3, 0x69, 0x22, 0x98, 0x43, 0x01, 0x9e, 0x22, 0x04, 0x2d, 0x33, 0x25, 0x2d, 0x65, 0xd6, 0xc5, 0x11, 0xa7, 0x16, 0xf0, 0x34,
0xb8, 0x41, 0xb7, 0xc8, 0x5a, 0x8c, 0x71, 0x1d, 0x8d, 0x6d, 0xc8, 0x64, 0x18, 0x2e, 0x8e, 0xdc, 0xd9, 0x45, 0x5b, 0x21, 0x84, 0x4d, 0xd0, 0xa6, 0x2d, 0xa2, 0x2c, 0x5c, 0x1c, 0xb9, 0x45, 0xd6,
0xa4, 0xcb, 0x64, 0x31, 0x61, 0xd2, 0x78, 0xa9, 0xac, 0x63, 0x51, 0xc4, 0x9c, 0xd4, 0x0a, 0x26, 0xd1, 0x6a, 0x44, 0x85, 0x76, 0x42, 0x1a, 0x4b, 0x83, 0x80, 0x5a, 0xa1, 0x24, 0x9e, 0xf1, 0x61,
0x43, 0xd8, 0xb6, 0x15, 0x3f, 0x1f, 0xfe, 0x9a, 0xde, 0x25, 0x3b, 0x06, 0x5f, 0xa5, 0x68, 0x9d, 0xd3, 0x93, 0xec, 0x62, 0xf8, 0x6b, 0x72, 0x17, 0xed, 0x6b, 0x78, 0x15, 0x83, 0xb1, 0x8e, 0x72,
0x67, 0x42, 0x18, 0xb4, 0xd6, 0x1f, 0x6a, 0xe3, 0x9d, 0x61, 0xca, 0x32, 0x9e, 0x91, 0xa6, 0xe8, 0xae, 0xc1, 0x18, 0x77, 0xac, 0xb4, 0xb3, 0x9a, 0x4a, 0x43, 0x59, 0x42, 0x9a, 0x25, 0x8f, 0xd0,
0x23, 0xb2, 0xcf, 0x38, 0xc7, 0xc4, 0xf9, 0xeb, 0xb8, 0xd3, 0xf4, 0x31, 0x79, 0x20, 0x90, 0x47, 0x21, 0x65, 0x0c, 0x22, 0xeb, 0x6e, 0xe2, 0xce, 0x91, 0xc7, 0xe8, 0x01, 0x07, 0x16, 0x08, 0x09,
0x52, 0xe1, 0xb5, 0xe4, 0x5b, 0x74, 0x95, 0xdc, 0xc9, 0x49, 0xa3, 0xc0, 0x6d, 0xba, 0x44, 0xc0, 0x37, 0x92, 0xe7, 0xc9, 0x26, 0xba, 0x93, 0x93, 0xc6, 0x81, 0xdb, 0x64, 0x0d, 0x61, 0x03, 0x92,
0xa2, 0x12, 0xe7, 0xa2, 0x84, 0xee, 0x90, 0x8d, 0x8b, 0xb9, 0x47, 0x09, 0x33, 0x41, 0x9a, 0x4b, 0x5f, 0x88, 0x22, 0xb2, 0x8f, 0x76, 0x2e, 0xe7, 0x1e, 0x27, 0x2c, 0x78, 0x69, 0xae, 0x14, 0xe9,
0x45, 0xfa, 0xa1, 0x80, 0x30, 0x3b, 0x1e, 0x66, 0x9c, 0xeb, 0x54, 0x39, 0x98, 0xa3, 0x7b, 0x64, 0x32, 0x01, 0xf1, 0xe2, 0x64, 0x98, 0x32, 0xa6, 0x62, 0x69, 0xf1, 0x12, 0x39, 0x40, 0xbb, 0x57,
0xeb, 0x32, 0x9c, 0xa4, 0xf5, 0x48, 0x72, 0x1f, 0xfa, 0x02, 0xf3, 0x74, 0x9b, 0xac, 0xe7, 0xfd, 0xe1, 0x28, 0x6e, 0x06, 0x82, 0x39, 0xdf, 0x17, 0xbc, 0x4c, 0xf6, 0xd0, 0x76, 0xde, 0x0f, 0xa6,
0xe0, 0x5a, 0xa0, 0x67, 0xa2, 0x85, 0xc6, 0x49, 0x8b, 0x31, 0x2a, 0x07, 0x0b, 0xb4, 0x4a, 0xb6, 0x38, 0x38, 0xca, 0xbb, 0xa0, 0xad, 0x30, 0x10, 0x82, 0xb4, 0x78, 0x85, 0xd4, 0xd1, 0x5e, 0x14,
0x93, 0xd4, 0x36, 0xbc, 0xd2, 0x4e, 0x1e, 0x4a, 0x3e, 0x48, 0x61, 0xf0, 0x48, 0x5a, 0x67, 0x06, 0x9b, 0xb6, 0x93, 0xca, 0x8a, 0x63, 0xc1, 0xd2, 0x14, 0x1a, 0x5a, 0xc2, 0x58, 0x9d, 0x4a, 0x8e,
0x92, 0x43, 0x50, 0xe8, 0xcb, 0x1c, 0x6f, 0xd0, 0x26, 0x5a, 0x59, 0x84, 0x45, 0xba, 0x41, 0x56, 0xbd, 0x42, 0x5f, 0xe6, 0x38, 0x0d, 0x26, 0x52, 0xd2, 0x00, 0x5e, 0x25, 0x3b, 0x68, 0xf3, 0x2a,
0x2f, 0x93, 0x5f, 0xa5, 0x68, 0xda, 0x40, 0xe9, 0x3d, 0xb2, 0x7b, 0x05, 0x58, 0xa6, 0xb8, 0x13, 0xf9, 0x55, 0x0c, 0xba, 0x87, 0x09, 0xb9, 0x87, 0x6a, 0xd7, 0x80, 0x65, 0x8a, 0x3b, 0xbe, 0xea,
0xaa, 0x1e, 0x77, 0x5f, 0xa6, 0x1f, 0x2c, 0x85, 0x92, 0xc6, 0xc1, 0xc3, 0xe3, 0xcb, 0xc1, 0x82, 0x49, 0xf7, 0x25, 0xfa, 0xe1, 0x35, 0x5f, 0xd2, 0x24, 0x38, 0x3b, 0xbe, 0xee, 0x2d, 0x08, 0xa1,
0x18, 0xeb, 0x97, 0xd2, 0x1b, 0x1c, 0xea, 0xbc, 0x42, 0xd7, 0xc8, 0xf2, 0x91, 0xd1, 0x69, 0x92, 0x7a, 0x29, 0x9c, 0x86, 0x4c, 0xe7, 0x0d, 0xb2, 0x85, 0xd6, 0x5b, 0x5a, 0xc5, 0x51, 0x22, 0x8b,
0xc9, 0xe2, 0xa5, 0x6a, 0x49, 0x37, 0xa8, 0x6e, 0x95, 0x2e, 0x92, 0xb9, 0x41, 0x50, 0xa0, 0x72, 0x13, 0xb2, 0x2b, 0x6c, 0x5a, 0xdd, 0x26, 0x59, 0x45, 0x4b, 0x69, 0x90, 0x83, 0xb4, 0xc2, 0xf6,
0xd2, 0xb5, 0xa1, 0x12, 0xd8, 0x5c, 0xc7, 0x71, 0xaa, 0xa4, 0x6b, 0x7b, 0x81, 0x96, 0x1b, 0x99, 0x70, 0xc5, 0xb3, 0x99, 0x0a, 0xc3, 0x58, 0x0a, 0xdb, 0x73, 0x1c, 0x0c, 0xd3, 0x22, 0x4a, 0xd8,
0x64, 0xec, 0x35, 0x5a, 0x21, 0x4b, 0x25, 0x34, 0x92, 0x67, 0x3d, 0xbc, 0xba, 0x44, 0x8a, 0x6e, 0x5b, 0xa4, 0x8a, 0xd6, 0x4a, 0x68, 0x2c, 0xcf, 0xf6, 0xf6, 0xf4, 0xfc, 0x94, 0x7f, 0x79, 0x89,
0x6b, 0xff, 0x52, 0x4b, 0x05, 0x1b, 0x74, 0x81, 0xcc, 0x24, 0x52, 0x15, 0xb6, 0xdf, 0x0c, 0xb3, 0x16, 0x1d, 0x57, 0xee, 0xa5, 0x12, 0x12, 0xef, 0x90, 0x15, 0xb4, 0x10, 0x09, 0x59, 0x58, 0xbf,
0x83, 0x42, 0x96, 0xb3, 0xb3, 0x15, 0x5e, 0x62, 0x1d, 0x73, 0xa9, 0xcd, 0x47, 0x67, 0x3b, 0xd4, 0xea, 0xe7, 0x07, 0xb8, 0x28, 0xe7, 0x67, 0xd7, 0xbf, 0xc6, 0x58, 0x6a, 0x63, 0x93, 0x8f, 0xcf,
0x22, 0x30, 0xc2, 0x91, 0x79, 0xd9, 0x09, 0xa6, 0x1a, 0xe7, 0x99, 0xe1, 0xd5, 0xb0, 0x4b, 0xd7, 0x9e, 0xaf, 0x87, 0x43, 0x00, 0x63, 0x33, 0xb3, 0xef, 0x8d, 0x35, 0xc9, 0x37, 0xd9, 0xd5, 0xb8,
0xc9, 0x0a, 0x53, 0x5a, 0xb5, 0x63, 0x9d, 0x5a, 0x1f, 0xa3, 0x33, 0x92, 0xfb, 0x3a, 0x73, 0xbc, 0x46, 0xb6, 0xd1, 0x06, 0x95, 0x4a, 0xf6, 0x42, 0x15, 0x1b, 0x17, 0x82, 0xd5, 0x82, 0xb9, 0x26,
0x01, 0x7b, 0xc5, 0x54, 0x65, 0x25, 0x1b, 0x8c, 0x75, 0x0b, 0x05, 0x54, 0x43, 0xd7, 0xca, 0xf0, 0xb5, 0xac, 0x8d, 0x0f, 0x8a, 0xc9, 0x4a, 0xca, 0xd6, 0x10, 0xaa, 0x2e, 0x70, 0x5c, 0xf7, 0x9d,
0xf0, 0x2a, 0x1b, 0x04, 0x14, 0x70, 0x97, 0x12, 0x32, 0x55, 0x67, 0xbc, 0x99, 0x26, 0x70, 0xaf, 0x2b, 0xc3, 0xd9, 0x55, 0xc6, 0x8b, 0xc8, 0xf1, 0x5d, 0x82, 0xd0, 0x6c, 0x93, 0xb2, 0x4e, 0x1c,
0x70, 0x64, 0x50, 0xb6, 0x15, 0x2a, 0xe5, 0xa8, 0x1c, 0x9a, 0x01, 0xf5, 0x7e, 0xe1, 0xc8, 0x8b, 0xe1, 0x7b, 0x85, 0x2b, 0xbd, 0xba, 0x5d, 0x5f, 0x29, 0x03, 0x69, 0x41, 0xa7, 0xd4, 0xfb, 0x85,
0xf0, 0x60, 0x1a, 0x51, 0xc0, 0x7e, 0x70, 0xdc, 0x58, 0x8a, 0x90, 0x36, 0x96, 0xd6, 0xa2, 0x80, 0x2b, 0x2f, 0xc3, 0xe9, 0x44, 0x02, 0xc7, 0x87, 0xde, 0x75, 0x13, 0x29, 0x5c, 0x98, 0x50, 0x18,
0x07, 0x99, 0x12, 0x81, 0x53, 0xd7, 0xba, 0x19, 0x33, 0xd3, 0x84, 0x03, 0xba, 0x42, 0xe8, 0xe0, 0x03, 0x1c, 0x3f, 0x48, 0x94, 0xf0, 0x9c, 0xa6, 0x52, 0x9d, 0x90, 0xea, 0x0e, 0x3e, 0x22, 0x1b,
0x85, 0x11, 0x32, 0xe3, 0x1b, 0xd2, 0x3a, 0x6d, 0xda, 0xf0, 0x30, 0xc8, 0x98, 0xc5, 0x2d, 0x3a, 0x88, 0xa4, 0x2f, 0x0c, 0x80, 0x6a, 0xd7, 0x16, 0xc6, 0x2a, 0xdd, 0xc3, 0x0f, 0xbd, 0x8c, 0x49,
0x27, 0xd5, 0x11, 0x3c, 0xa2, 0xbb, 0x64, 0xb3, 0x6c, 0x04, 0x33, 0xbc, 0x21, 0x5b, 0xe8, 0x63, 0xdc, 0x80, 0xb5, 0x42, 0xb6, 0xf0, 0x23, 0x52, 0x43, 0xd5, 0xb2, 0x11, 0x54, 0xb3, 0xb6, 0xe8,
0x76, 0xa4, 0xd0, 0x45, 0x52, 0x35, 0xe1, 0x71, 0x68, 0x62, 0x76, 0x26, 0x31, 0xfa, 0x50, 0x46, 0x82, 0x0b, 0x69, 0x4b, 0x82, 0x0d, 0x84, 0xec, 0xe0, 0xc7, 0xa4, 0x82, 0xd6, 0x92, 0x33, 0x91,
0xe8, 0x13, 0xc9, 0x5d, 0x6a, 0x10, 0xbe, 0x29, 0xb2, 0xe5, 0x33, 0xf6, 0x6d, 0x26, 0xe6, 0x60, 0x56, 0xc7, 0x22, 0x00, 0x17, 0x09, 0x66, 0x63, 0x0d, 0xf8, 0x9b, 0x22, 0x5b, 0x3e, 0x67, 0xdf,
0x95, 0xe4, 0x73, 0x94, 0x3b, 0xb1, 0x16, 0x54, 0x33, 0xe8, 0xcc, 0x60, 0xb8, 0xce, 0x83, 0x4f, 0x26, 0x62, 0xa6, 0xeb, 0x24, 0x9f, 0xa5, 0xdc, 0x8d, 0x0d, 0xaf, 0x9a, 0x06, 0xab, 0xd3, 0x01,
0xe8, 0x3e, 0xa9, 0x5e, 0xe9, 0x87, 0xd2, 0xae, 0xdf, 0x95, 0xd2, 0x17, 0xe4, 0x61, 0x29, 0x16, 0xbb, 0x08, 0x3e, 0x21, 0x87, 0xa8, 0x7e, 0xad, 0x1f, 0x4a, 0xcb, 0x7e, 0x57, 0x4a, 0x5f, 0x90,
0xbe, 0x0f, 0xb5, 0xe4, 0x47, 0xf3, 0x1b, 0x5a, 0x68, 0x0a, 0xdb, 0xc3, 0xd3, 0xe0, 0x86, 0x0b, 0xb3, 0x52, 0x0c, 0xfe, 0xde, 0xd7, 0x92, 0x1f, 0xcd, 0x6f, 0xe8, 0x82, 0x2e, 0xac, 0x8f, 0x9f,
0xef, 0x3b, 0x47, 0x78, 0x16, 0x52, 0xe4, 0x3b, 0x68, 0x2c, 0xe3, 0x87, 0xc2, 0x13, 0xce, 0xa4, 0x7a, 0x37, 0x5c, 0x7a, 0xdf, 0x05, 0xc2, 0x33, 0x9f, 0x22, 0xdf, 0x43, 0x13, 0x19, 0x3f, 0x14,
0xd6, 0xa1, 0xf0, 0xa9, 0x45, 0x03, 0x3f, 0x16, 0xad, 0x1e, 0x65, 0x17, 0xf5, 0xfd, 0x54, 0xb4, 0x9e, 0xb0, 0x3a, 0x36, 0x16, 0xb8, 0x8b, 0x0d, 0x68, 0xfc, 0x63, 0xd1, 0xea, 0x71, 0x76, 0x51,
0xfa, 0x42, 0xe5, 0x5e, 0x20, 0x97, 0x36, 0x24, 0xfe, 0x79, 0xb0, 0x7c, 0xc6, 0x48, 0x10, 0x21, 0xdf, 0x4f, 0x45, 0xab, 0x2f, 0x55, 0xee, 0x38, 0x30, 0x61, 0x7c, 0xe2, 0x9f, 0xd3, 0x05, 0x34,
0x6b, 0x21, 0xfc, 0x12, 0xf0, 0x2c, 0xc5, 0xd0, 0xe2, 0x61, 0xdd, 0xc6, 0xa5, 0xd3, 0x7f, 0x2d, 0x41, 0x82, 0x00, 0x68, 0x17, 0xf0, 0x2f, 0x1e, 0x4f, 0x52, 0x64, 0x16, 0xf7, 0x2b, 0x37, 0x2c,
0x7a, 0x6e, 0x59, 0x0b, 0x45, 0xbe, 0x95, 0xe1, 0x79, 0x58, 0x23, 0x65, 0x5e, 0xce, 0x14, 0xc7, 0x9d, 0xfe, 0x6b, 0xd1, 0x73, 0x43, 0xbb, 0xc0, 0xf3, 0xcd, 0x8c, 0x9f, 0xfb, 0x55, 0x52, 0xe6,
0xe8, 0xd2, 0xc4, 0xfd, 0x16, 0x94, 0x19, 0x62, 0x63, 0xeb, 0x7e, 0x51, 0x34, 0xbb, 0x89, 0xed, 0x65, 0x54, 0x32, 0x08, 0xae, 0x4c, 0xdc, 0x6f, 0x5e, 0x99, 0x0c, 0x9b, 0x58, 0xf7, 0x8b, 0xa2,
0xf0, 0x05, 0x04, 0xbf, 0x17, 0x4a, 0x58, 0xcd, 0x25, 0x8b, 0x7c, 0xb0, 0x8b, 0x85, 0x3f, 0xe8, 0xd9, 0x1d, 0xe8, 0xf9, 0x2f, 0x21, 0xfc, 0x7b, 0xa1, 0x84, 0x51, 0x4c, 0xd0, 0xc0, 0x79, 0xbb,
0x26, 0xa9, 0x64, 0x61, 0x54, 0x36, 0x13, 0x47, 0xb1, 0x18, 0xbd, 0x40, 0xc7, 0x64, 0x04, 0x7f, 0x18, 0xfc, 0x07, 0xa9, 0xa2, 0x4a, 0x12, 0x06, 0x69, 0x12, 0x71, 0x24, 0x0d, 0xc1, 0x71, 0xb0,
0xd2, 0xfb, 0x64, 0x6f, 0xac, 0xa1, 0x47, 0xf7, 0x13, 0xb0, 0xb0, 0x45, 0xaf, 0xa5, 0xf9, 0x30, 0x54, 0x04, 0xf8, 0x4f, 0x72, 0x1f, 0x1d, 0x4c, 0x34, 0xf4, 0xf8, 0x8e, 0xc2, 0xd4, 0x6f, 0xd2,
0xff, 0x08, 0xf5, 0x60, 0x8a, 0x11, 0x0f, 0x8b, 0x78, 0x64, 0x73, 0xf0, 0xf0, 0x15, 0x58, 0x82, 0x1b, 0x69, 0xce, 0xcf, 0x3f, 0xe0, 0xa6, 0x37, 0xc5, 0x98, 0x87, 0x79, 0x38, 0xb6, 0x39, 0x98,
0xd9, 0x0e, 0xb1, 0x0d, 0x66, 0x4a, 0x85, 0xd0, 0x82, 0x08, 0x1a, 0x8d, 0x3a, 0xd9, 0xf3, 0xd4, 0xff, 0x1a, 0x2c, 0xc1, 0x64, 0x87, 0x98, 0x36, 0xd5, 0xa5, 0x42, 0x60, 0x30, 0xf7, 0x1a, 0x8d,
0x3a, 0x1d, 0xcb, 0xd7, 0xf9, 0xba, 0x88, 0xb4, 0x01, 0x2c, 0xcc, 0x37, 0x64, 0x59, 0x9f, 0x68, 0x3b, 0xd9, 0xb1, 0xd8, 0x58, 0x15, 0x8a, 0xd7, 0xf9, 0xba, 0x08, 0x94, 0xc6, 0x50, 0x98, 0x2f,
0x2b, 0x03, 0xc3, 0xc2, 0x61, 0x7d, 0xee, 0xf5, 0x4c, 0xed, 0xc9, 0xf3, 0xfc, 0x87, 0xc2, 0x9b, 0x63, 0x19, 0x17, 0x29, 0x23, 0x3c, 0xc3, 0xe0, 0xe3, 0xe6, 0xd2, 0xeb, 0x85, 0xc6, 0x93, 0xe7,
0xa9, 0xec, 0xbf, 0x67, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0xd4, 0x9b, 0xda, 0x33, 0xcf, 0x08, 0xf9, 0x8f, 0x85, 0x37, 0xb3, 0xc9, 0x7f, 0xcf, 0xfe, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x99, 0x64,
0x00, 0x00, 0xf4, 0xe4, 0xd3, 0x08, 0x00, 0x00,
} }

View File

@ -39,7 +39,7 @@ message ApplicationMetadataMessage {
GROUP_CHAT_INVITATION = 23; GROUP_CHAT_INVITATION = 23;
CHAT_IDENTITY = 24; CHAT_IDENTITY = 24;
COMMUNITY_DESCRIPTION = 25; COMMUNITY_DESCRIPTION = 25;
COMMUNITY_INVITATION = 26; COMMUNITY_INVITATION = 26 [deprecated=true];
COMMUNITY_REQUEST_TO_JOIN = 27; COMMUNITY_REQUEST_TO_JOIN = 27;
PIN_MESSAGE = 28; PIN_MESSAGE = 28;
EDIT_MESSAGE = 29; EDIT_MESSAGE = 29;

View File

@ -876,69 +876,6 @@ func (m *CommunityCategory) GetPosition() int32 {
return 0 return 0
} }
type CommunityInvitation struct {
WrappedCommunityDescription []byte `protobuf:"bytes,1,opt,name=wrapped_community_description,json=wrappedCommunityDescription,proto3" json:"wrapped_community_description,omitempty"`
Grant []byte `protobuf:"bytes,2,opt,name=grant,proto3" json:"grant,omitempty"`
ChatId string `protobuf:"bytes,3,opt,name=chat_id,json=chatId,proto3" json:"chat_id,omitempty"`
PublicKey []byte `protobuf:"bytes,4,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *CommunityInvitation) Reset() { *m = CommunityInvitation{} }
func (m *CommunityInvitation) String() string { return proto.CompactTextString(m) }
func (*CommunityInvitation) ProtoMessage() {}
func (*CommunityInvitation) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{10}
}
func (m *CommunityInvitation) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CommunityInvitation.Unmarshal(m, b)
}
func (m *CommunityInvitation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_CommunityInvitation.Marshal(b, m, deterministic)
}
func (m *CommunityInvitation) XXX_Merge(src proto.Message) {
xxx_messageInfo_CommunityInvitation.Merge(m, src)
}
func (m *CommunityInvitation) XXX_Size() int {
return xxx_messageInfo_CommunityInvitation.Size(m)
}
func (m *CommunityInvitation) XXX_DiscardUnknown() {
xxx_messageInfo_CommunityInvitation.DiscardUnknown(m)
}
var xxx_messageInfo_CommunityInvitation proto.InternalMessageInfo
func (m *CommunityInvitation) GetWrappedCommunityDescription() []byte {
if m != nil {
return m.WrappedCommunityDescription
}
return nil
}
func (m *CommunityInvitation) GetGrant() []byte {
if m != nil {
return m.Grant
}
return nil
}
func (m *CommunityInvitation) GetChatId() string {
if m != nil {
return m.ChatId
}
return ""
}
func (m *CommunityInvitation) GetPublicKey() []byte {
if m != nil {
return m.PublicKey
}
return nil
}
type RevealedAccount struct { type RevealedAccount struct {
Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"`
@ -953,7 +890,7 @@ func (m *RevealedAccount) Reset() { *m = RevealedAccount{} }
func (m *RevealedAccount) String() string { return proto.CompactTextString(m) } func (m *RevealedAccount) String() string { return proto.CompactTextString(m) }
func (*RevealedAccount) ProtoMessage() {} func (*RevealedAccount) ProtoMessage() {}
func (*RevealedAccount) Descriptor() ([]byte, []int) { func (*RevealedAccount) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{11} return fileDescriptor_f937943d74c1cd8b, []int{10}
} }
func (m *RevealedAccount) XXX_Unmarshal(b []byte) error { func (m *RevealedAccount) XXX_Unmarshal(b []byte) error {
@ -1018,7 +955,7 @@ func (m *CommunityRequestToJoin) Reset() { *m = CommunityRequestToJoin{}
func (m *CommunityRequestToJoin) String() string { return proto.CompactTextString(m) } func (m *CommunityRequestToJoin) String() string { return proto.CompactTextString(m) }
func (*CommunityRequestToJoin) ProtoMessage() {} func (*CommunityRequestToJoin) ProtoMessage() {}
func (*CommunityRequestToJoin) Descriptor() ([]byte, []int) { func (*CommunityRequestToJoin) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{12} return fileDescriptor_f937943d74c1cd8b, []int{11}
} }
func (m *CommunityRequestToJoin) XXX_Unmarshal(b []byte) error { func (m *CommunityRequestToJoin) XXX_Unmarshal(b []byte) error {
@ -1094,7 +1031,7 @@ func (m *CommunityEditRevealedAccounts) Reset() { *m = CommunityEditReve
func (m *CommunityEditRevealedAccounts) String() string { return proto.CompactTextString(m) } func (m *CommunityEditRevealedAccounts) String() string { return proto.CompactTextString(m) }
func (*CommunityEditRevealedAccounts) ProtoMessage() {} func (*CommunityEditRevealedAccounts) ProtoMessage() {}
func (*CommunityEditRevealedAccounts) Descriptor() ([]byte, []int) { func (*CommunityEditRevealedAccounts) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{13} return fileDescriptor_f937943d74c1cd8b, []int{12}
} }
func (m *CommunityEditRevealedAccounts) XXX_Unmarshal(b []byte) error { func (m *CommunityEditRevealedAccounts) XXX_Unmarshal(b []byte) error {
@ -1151,7 +1088,7 @@ func (m *CommunityCancelRequestToJoin) Reset() { *m = CommunityCancelReq
func (m *CommunityCancelRequestToJoin) String() string { return proto.CompactTextString(m) } func (m *CommunityCancelRequestToJoin) String() string { return proto.CompactTextString(m) }
func (*CommunityCancelRequestToJoin) ProtoMessage() {} func (*CommunityCancelRequestToJoin) ProtoMessage() {}
func (*CommunityCancelRequestToJoin) Descriptor() ([]byte, []int) { func (*CommunityCancelRequestToJoin) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{14} return fileDescriptor_f937943d74c1cd8b, []int{13}
} }
func (m *CommunityCancelRequestToJoin) XXX_Unmarshal(b []byte) error { func (m *CommunityCancelRequestToJoin) XXX_Unmarshal(b []byte) error {
@ -1223,7 +1160,7 @@ func (m *CommunityRequestToJoinResponse) Reset() { *m = CommunityRequest
func (m *CommunityRequestToJoinResponse) String() string { return proto.CompactTextString(m) } func (m *CommunityRequestToJoinResponse) String() string { return proto.CompactTextString(m) }
func (*CommunityRequestToJoinResponse) ProtoMessage() {} func (*CommunityRequestToJoinResponse) ProtoMessage() {}
func (*CommunityRequestToJoinResponse) Descriptor() ([]byte, []int) { func (*CommunityRequestToJoinResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{15} return fileDescriptor_f937943d74c1cd8b, []int{14}
} }
func (m *CommunityRequestToJoinResponse) XXX_Unmarshal(b []byte) error { func (m *CommunityRequestToJoinResponse) XXX_Unmarshal(b []byte) error {
@ -1298,7 +1235,7 @@ func (m *CommunityRequestToLeave) Reset() { *m = CommunityRequestToLeave
func (m *CommunityRequestToLeave) String() string { return proto.CompactTextString(m) } func (m *CommunityRequestToLeave) String() string { return proto.CompactTextString(m) }
func (*CommunityRequestToLeave) ProtoMessage() {} func (*CommunityRequestToLeave) ProtoMessage() {}
func (*CommunityRequestToLeave) Descriptor() ([]byte, []int) { func (*CommunityRequestToLeave) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{16} return fileDescriptor_f937943d74c1cd8b, []int{15}
} }
func (m *CommunityRequestToLeave) XXX_Unmarshal(b []byte) error { func (m *CommunityRequestToLeave) XXX_Unmarshal(b []byte) error {
@ -1345,7 +1282,7 @@ func (m *CommunityMessageArchiveMagnetlink) Reset() { *m = CommunityMess
func (m *CommunityMessageArchiveMagnetlink) String() string { return proto.CompactTextString(m) } func (m *CommunityMessageArchiveMagnetlink) String() string { return proto.CompactTextString(m) }
func (*CommunityMessageArchiveMagnetlink) ProtoMessage() {} func (*CommunityMessageArchiveMagnetlink) ProtoMessage() {}
func (*CommunityMessageArchiveMagnetlink) Descriptor() ([]byte, []int) { func (*CommunityMessageArchiveMagnetlink) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{17} return fileDescriptor_f937943d74c1cd8b, []int{16}
} }
func (m *CommunityMessageArchiveMagnetlink) XXX_Unmarshal(b []byte) error { func (m *CommunityMessageArchiveMagnetlink) XXX_Unmarshal(b []byte) error {
@ -1397,7 +1334,7 @@ func (m *WakuMessage) Reset() { *m = WakuMessage{} }
func (m *WakuMessage) String() string { return proto.CompactTextString(m) } func (m *WakuMessage) String() string { return proto.CompactTextString(m) }
func (*WakuMessage) ProtoMessage() {} func (*WakuMessage) ProtoMessage() {}
func (*WakuMessage) Descriptor() ([]byte, []int) { func (*WakuMessage) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{18} return fileDescriptor_f937943d74c1cd8b, []int{17}
} }
func (m *WakuMessage) XXX_Unmarshal(b []byte) error { func (m *WakuMessage) XXX_Unmarshal(b []byte) error {
@ -1481,7 +1418,7 @@ func (m *WakuMessageArchiveMetadata) Reset() { *m = WakuMessageArchiveMe
func (m *WakuMessageArchiveMetadata) String() string { return proto.CompactTextString(m) } func (m *WakuMessageArchiveMetadata) String() string { return proto.CompactTextString(m) }
func (*WakuMessageArchiveMetadata) ProtoMessage() {} func (*WakuMessageArchiveMetadata) ProtoMessage() {}
func (*WakuMessageArchiveMetadata) Descriptor() ([]byte, []int) { func (*WakuMessageArchiveMetadata) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{19} return fileDescriptor_f937943d74c1cd8b, []int{18}
} }
func (m *WakuMessageArchiveMetadata) XXX_Unmarshal(b []byte) error { func (m *WakuMessageArchiveMetadata) XXX_Unmarshal(b []byte) error {
@ -1543,7 +1480,7 @@ func (m *WakuMessageArchive) Reset() { *m = WakuMessageArchive{} }
func (m *WakuMessageArchive) String() string { return proto.CompactTextString(m) } func (m *WakuMessageArchive) String() string { return proto.CompactTextString(m) }
func (*WakuMessageArchive) ProtoMessage() {} func (*WakuMessageArchive) ProtoMessage() {}
func (*WakuMessageArchive) Descriptor() ([]byte, []int) { func (*WakuMessageArchive) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{20} return fileDescriptor_f937943d74c1cd8b, []int{19}
} }
func (m *WakuMessageArchive) XXX_Unmarshal(b []byte) error { func (m *WakuMessageArchive) XXX_Unmarshal(b []byte) error {
@ -1600,7 +1537,7 @@ func (m *WakuMessageArchiveIndexMetadata) Reset() { *m = WakuMessageArch
func (m *WakuMessageArchiveIndexMetadata) String() string { return proto.CompactTextString(m) } func (m *WakuMessageArchiveIndexMetadata) String() string { return proto.CompactTextString(m) }
func (*WakuMessageArchiveIndexMetadata) ProtoMessage() {} func (*WakuMessageArchiveIndexMetadata) ProtoMessage() {}
func (*WakuMessageArchiveIndexMetadata) Descriptor() ([]byte, []int) { func (*WakuMessageArchiveIndexMetadata) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{21} return fileDescriptor_f937943d74c1cd8b, []int{20}
} }
func (m *WakuMessageArchiveIndexMetadata) XXX_Unmarshal(b []byte) error { func (m *WakuMessageArchiveIndexMetadata) XXX_Unmarshal(b []byte) error {
@ -1667,7 +1604,7 @@ func (m *WakuMessageArchiveIndex) Reset() { *m = WakuMessageArchiveIndex
func (m *WakuMessageArchiveIndex) String() string { return proto.CompactTextString(m) } func (m *WakuMessageArchiveIndex) String() string { return proto.CompactTextString(m) }
func (*WakuMessageArchiveIndex) ProtoMessage() {} func (*WakuMessageArchiveIndex) ProtoMessage() {}
func (*WakuMessageArchiveIndex) Descriptor() ([]byte, []int) { func (*WakuMessageArchiveIndex) Descriptor() ([]byte, []int) {
return fileDescriptor_f937943d74c1cd8b, []int{22} return fileDescriptor_f937943d74c1cd8b, []int{21}
} }
func (m *WakuMessageArchiveIndex) XXX_Unmarshal(b []byte) error { func (m *WakuMessageArchiveIndex) XXX_Unmarshal(b []byte) error {
@ -1716,7 +1653,6 @@ func init() {
proto.RegisterType((*CommunityChat)(nil), "protobuf.CommunityChat") proto.RegisterType((*CommunityChat)(nil), "protobuf.CommunityChat")
proto.RegisterMapType((map[string]*CommunityMember)(nil), "protobuf.CommunityChat.MembersEntry") proto.RegisterMapType((map[string]*CommunityMember)(nil), "protobuf.CommunityChat.MembersEntry")
proto.RegisterType((*CommunityCategory)(nil), "protobuf.CommunityCategory") proto.RegisterType((*CommunityCategory)(nil), "protobuf.CommunityCategory")
proto.RegisterType((*CommunityInvitation)(nil), "protobuf.CommunityInvitation")
proto.RegisterType((*RevealedAccount)(nil), "protobuf.RevealedAccount") proto.RegisterType((*RevealedAccount)(nil), "protobuf.RevealedAccount")
proto.RegisterType((*CommunityRequestToJoin)(nil), "protobuf.CommunityRequestToJoin") proto.RegisterType((*CommunityRequestToJoin)(nil), "protobuf.CommunityRequestToJoin")
proto.RegisterType((*CommunityEditRevealedAccounts)(nil), "protobuf.CommunityEditRevealedAccounts") proto.RegisterType((*CommunityEditRevealedAccounts)(nil), "protobuf.CommunityEditRevealedAccounts")
@ -1737,136 +1673,133 @@ func init() {
} }
var fileDescriptor_f937943d74c1cd8b = []byte{ var fileDescriptor_f937943d74c1cd8b = []byte{
// 2096 bytes of a gzipped FileDescriptorProto // 2035 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0x4f, 0x73, 0x23, 0x47, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0xcd, 0x73, 0x1b, 0x49,
0x15, 0xcf, 0x48, 0xb2, 0x2d, 0x3d, 0x59, 0xb6, 0xdc, 0xbb, 0x6b, 0x8f, 0xbd, 0xeb, 0xac, 0x33, 0x15, 0xcf, 0x48, 0xb2, 0x2d, 0x3d, 0x49, 0xb6, 0xdc, 0x49, 0xec, 0xb1, 0x93, 0x6c, 0x14, 0x01,
0x40, 0xe1, 0x84, 0xc2, 0x49, 0x0c, 0x14, 0x5b, 0x09, 0x24, 0xd1, 0xca, 0xc3, 0x46, 0xec, 0x6a, 0x85, 0x77, 0x29, 0x94, 0x5d, 0x03, 0x45, 0x6a, 0x17, 0x76, 0x57, 0x91, 0x87, 0xac, 0x48, 0x34,
0xe4, 0xb4, 0xe4, 0x2c, 0xa4, 0x80, 0xa9, 0xf6, 0x4c, 0xdb, 0xee, 0x5a, 0x69, 0x46, 0x4c, 0xb7, 0xf2, 0xb6, 0xe4, 0x0d, 0x6c, 0x01, 0x53, 0xed, 0x99, 0xb6, 0xdd, 0x15, 0x69, 0x46, 0x4c, 0xb7,
0x0c, 0xe2, 0x00, 0x55, 0x14, 0x9f, 0x80, 0x0b, 0x57, 0xaa, 0x38, 0x70, 0xe3, 0x1b, 0x50, 0x1c, 0x5c, 0x88, 0x03, 0x54, 0x51, 0xfc, 0x05, 0x5c, 0xb8, 0x52, 0xc5, 0x9d, 0xff, 0x80, 0xe2, 0xc0,
0xb8, 0x73, 0xe7, 0xc6, 0x91, 0x23, 0x27, 0x2e, 0x5c, 0xa8, 0xfe, 0x33, 0xa3, 0x19, 0x59, 0xda, 0x9d, 0x3b, 0x37, 0x8e, 0x1c, 0x39, 0x71, 0xe1, 0x42, 0xf5, 0xc7, 0x8c, 0x66, 0x64, 0x39, 0x1f,
0x3f, 0x04, 0xaa, 0x38, 0x69, 0xde, 0xeb, 0xd7, 0xaf, 0x5f, 0xbf, 0xf7, 0x7b, 0xaf, 0xdf, 0x13, 0x2c, 0x54, 0x71, 0xd2, 0xbc, 0xd7, 0xaf, 0x5f, 0xbf, 0xf7, 0xfa, 0xd7, 0xef, 0x43, 0xb0, 0xed,
0x6c, 0x05, 0xf1, 0x68, 0x34, 0x89, 0x98, 0x60, 0x94, 0x1f, 0x8d, 0x93, 0x58, 0xc4, 0xa8, 0xaa, 0x47, 0x93, 0xc9, 0x2c, 0x64, 0x82, 0x51, 0xde, 0x9e, 0xc6, 0x91, 0x88, 0x50, 0x59, 0xfd, 0x9c,
0x7e, 0xce, 0x27, 0x17, 0x7b, 0xb7, 0x82, 0x2b, 0x22, 0x7c, 0x16, 0xd2, 0x48, 0x30, 0x31, 0xd5, 0xce, 0xce, 0xf6, 0x6f, 0xfa, 0x17, 0x44, 0x78, 0x2c, 0xa0, 0xa1, 0x60, 0x62, 0xae, 0x97, 0xf7,
0xcb, 0x7b, 0x75, 0x1a, 0x4d, 0x46, 0x46, 0xd6, 0xb9, 0x86, 0x95, 0x47, 0x09, 0x89, 0x04, 0x7a, 0xab, 0x34, 0x9c, 0x4d, 0x8c, 0x6c, 0xeb, 0x12, 0xd6, 0x9e, 0xc4, 0x24, 0x14, 0xe8, 0x01, 0xd4,
0x03, 0xd6, 0x53, 0x4d, 0x53, 0x9f, 0x85, 0xb6, 0x75, 0x60, 0x1d, 0xae, 0xe3, 0x7a, 0xc6, 0xeb, 0x12, 0x4d, 0x73, 0x8f, 0x05, 0xb6, 0xd5, 0xb4, 0x0e, 0x6a, 0xb8, 0x9a, 0xf2, 0x7a, 0x01, 0xba,
0x84, 0xe8, 0x2e, 0xd4, 0x46, 0x74, 0x74, 0x4e, 0x13, 0xb9, 0x5e, 0x52, 0xeb, 0x55, 0xcd, 0xe8, 0x03, 0x95, 0x09, 0x9d, 0x9c, 0xd2, 0x58, 0xae, 0x17, 0xd4, 0x7a, 0x59, 0x33, 0x7a, 0x01, 0xda,
0x84, 0x68, 0x07, 0xd6, 0xcc, 0x61, 0x76, 0xf9, 0xc0, 0x3a, 0xac, 0xe1, 0x55, 0x49, 0x76, 0x42, 0x85, 0x0d, 0x73, 0x98, 0x5d, 0x6c, 0x5a, 0x07, 0x15, 0xbc, 0x2e, 0xc9, 0x5e, 0x80, 0x6e, 0xc1,
0x74, 0x1b, 0x56, 0x82, 0x61, 0x1c, 0x3c, 0xb3, 0x2b, 0x07, 0xd6, 0x61, 0x05, 0x6b, 0xc2, 0xf9, 0x9a, 0x3f, 0x8e, 0xfc, 0x17, 0x76, 0xa9, 0x69, 0x1d, 0x94, 0xb0, 0x26, 0x5a, 0x7f, 0x2c, 0xc0,
0x63, 0x09, 0x36, 0xdb, 0xa9, 0xee, 0xae, 0x52, 0x82, 0xbe, 0x01, 0x2b, 0x49, 0x3c, 0xa4, 0xdc, 0x56, 0x37, 0xd1, 0xdd, 0x57, 0x4a, 0xd0, 0xb7, 0x60, 0x2d, 0x8e, 0xc6, 0x94, 0xdb, 0x56, 0xb3,
0xb6, 0x0e, 0xca, 0x87, 0x1b, 0xc7, 0xf7, 0x8f, 0xd2, 0x7b, 0x1c, 0xcd, 0x49, 0x1e, 0x61, 0x29, 0x78, 0xb0, 0x79, 0x78, 0xbf, 0x9d, 0xf8, 0xd1, 0x5e, 0x92, 0x6c, 0x63, 0x29, 0x86, 0xb5, 0x34,
0x86, 0xb5, 0x34, 0xfa, 0x0e, 0x6c, 0x25, 0xf4, 0x9a, 0x92, 0x21, 0x0d, 0x7d, 0x12, 0x04, 0xf1, 0xfa, 0x1e, 0x6c, 0xc7, 0xf4, 0x92, 0x92, 0x31, 0x0d, 0x3c, 0xe2, 0xfb, 0xd1, 0x2c, 0x14, 0xdc,
0x24, 0x12, 0xdc, 0x2e, 0x1d, 0x94, 0x0f, 0xeb, 0xc7, 0xbb, 0x33, 0x15, 0xd8, 0x88, 0xb4, 0xb4, 0x2e, 0x34, 0x8b, 0x07, 0xd5, 0xc3, 0xbd, 0x85, 0x0a, 0x6c, 0x44, 0x3a, 0x5a, 0x02, 0x37, 0xe2,
0x04, 0x6e, 0x26, 0x45, 0x06, 0x47, 0x6f, 0xc1, 0xd6, 0x90, 0x70, 0xe1, 0x4f, 0xc6, 0x21, 0x11, 0x3c, 0x83, 0xa3, 0x77, 0x60, 0x7b, 0x4c, 0xb8, 0xf0, 0x66, 0xd3, 0x80, 0x08, 0xea, 0x69, 0xa3,
0xd4, 0xd7, 0x46, 0x97, 0x95, 0xd1, 0x9b, 0x72, 0xe1, 0x4c, 0xf1, 0xdb, 0xca, 0xfc, 0x5f, 0xc0, 0x8b, 0xca, 0xe8, 0x2d, 0xb9, 0x70, 0xa2, 0xf8, 0x5d, 0x65, 0xfe, 0x2f, 0x61, 0x4d, 0xd9, 0x80,
0x8a, 0xb2, 0x01, 0x35, 0xa0, 0x86, 0x7b, 0x4f, 0x5c, 0xdf, 0xeb, 0x79, 0x6e, 0xf3, 0x35, 0xb4, 0xea, 0x50, 0xc1, 0x83, 0x67, 0x8e, 0xe7, 0x0e, 0x5c, 0xa7, 0x71, 0x03, 0x6d, 0x02, 0x28, 0x72,
0x01, 0xa0, 0xc8, 0xde, 0x53, 0xcf, 0xc5, 0x4d, 0x0b, 0xdd, 0x81, 0x2d, 0x45, 0x77, 0x5b, 0x5e, 0xf0, 0xdc, 0x75, 0x70, 0xc3, 0x42, 0xb7, 0x61, 0x5b, 0xd1, 0xfd, 0x8e, 0xdb, 0x79, 0xe2, 0x78,
0xeb, 0x91, 0xeb, 0x9f, 0xf5, 0x5d, 0xdc, 0x6f, 0x96, 0xd0, 0x2e, 0xdc, 0xd1, 0xec, 0xde, 0x89, 0x27, 0x43, 0x07, 0x0f, 0x1b, 0x05, 0xb4, 0x07, 0xb7, 0x35, 0x7b, 0x70, 0xe4, 0xe0, 0xce, 0xc8,
0x8b, 0x5b, 0x03, 0xd7, 0x6f, 0xf7, 0xbc, 0x81, 0xeb, 0x0d, 0x9a, 0xe5, 0x4c, 0x43, 0xeb, 0xa4, 0xf1, 0xba, 0x03, 0x77, 0xe4, 0xb8, 0xa3, 0x46, 0x31, 0xd5, 0xd0, 0x39, 0xea, 0xf7, 0xdc, 0x46,
0xdb, 0xf1, 0x9a, 0x95, 0x4c, 0xc3, 0xa0, 0xf7, 0xd8, 0xf5, 0xfc, 0x6e, 0xab, 0x3f, 0x70, 0x71, 0x29, 0xd5, 0x30, 0x1a, 0x3c, 0x75, 0x5c, 0xaf, 0xdf, 0x19, 0x8e, 0x1c, 0xdc, 0x58, 0x6b, 0xfd,
0x73, 0xc5, 0xf9, 0x65, 0x19, 0xb6, 0x33, 0xaf, 0x0c, 0xe2, 0x67, 0x34, 0xea, 0x52, 0x41, 0x42, 0xaa, 0x08, 0x3b, 0x69, 0x54, 0x46, 0xd1, 0x0b, 0x1a, 0xf6, 0xa9, 0x20, 0x01, 0x11, 0x04, 0x9d,
0x22, 0x08, 0xba, 0x00, 0x14, 0xc4, 0x91, 0x48, 0x48, 0x20, 0x7c, 0x12, 0x86, 0x09, 0xe5, 0xdc, 0x01, 0xf2, 0xa3, 0x50, 0xc4, 0xc4, 0x17, 0x1e, 0x09, 0x82, 0x98, 0x72, 0x6e, 0x62, 0x5a, 0x3d,
0xf8, 0xb4, 0x7e, 0xfc, 0xcd, 0x05, 0x3e, 0x2d, 0xec, 0x3e, 0x6a, 0x9b, 0xad, 0xad, 0x74, 0xa7, 0xfc, 0xf6, 0x8a, 0x98, 0xe6, 0x76, 0xb7, 0xbb, 0x66, 0x6b, 0x27, 0xd9, 0xe9, 0x84, 0x22, 0x9e,
0x1b, 0x89, 0x64, 0x8a, 0xb7, 0x82, 0x79, 0x3e, 0x3a, 0x80, 0x7a, 0x48, 0x79, 0x90, 0xb0, 0xb1, 0xe3, 0x6d, 0x7f, 0x99, 0x8f, 0x9a, 0x50, 0x0d, 0x28, 0xf7, 0x63, 0x36, 0x15, 0x2c, 0x0a, 0x15,
0x60, 0x71, 0xa4, 0x00, 0x51, 0xc3, 0x79, 0x96, 0x0c, 0x3d, 0x1b, 0x91, 0x4b, 0x6a, 0x10, 0xa1, 0x20, 0x2a, 0x38, 0xcb, 0x92, 0x57, 0xcf, 0x26, 0xe4, 0x9c, 0x1a, 0x44, 0x68, 0x02, 0xbd, 0x0f,
0x09, 0xf4, 0x1e, 0xd4, 0x84, 0x3c, 0x72, 0x30, 0x1d, 0x53, 0x05, 0x8a, 0x8d, 0xe3, 0x7b, 0xcb, 0x15, 0x21, 0x8f, 0x1c, 0xcd, 0xa7, 0x54, 0x81, 0x62, 0xf3, 0xf0, 0xee, 0x75, 0x66, 0x49, 0x19,
0xcc, 0x92, 0x32, 0x78, 0x26, 0x8e, 0xb6, 0x61, 0x95, 0x4f, 0x47, 0xe7, 0xf1, 0xd0, 0x5e, 0xd1, 0xbc, 0x10, 0x47, 0x3b, 0xb0, 0xce, 0xe7, 0x93, 0xd3, 0x68, 0x6c, 0xaf, 0x69, 0x90, 0x69, 0x0a,
0x20, 0xd3, 0x14, 0x42, 0x50, 0x89, 0xc8, 0x88, 0xda, 0xab, 0x8a, 0xab, 0xbe, 0xd1, 0x1e, 0x54, 0x21, 0x28, 0x85, 0x64, 0x42, 0xed, 0x75, 0xc5, 0x55, 0xdf, 0x68, 0x1f, 0xca, 0x01, 0xf5, 0xd9,
0x43, 0x1a, 0xb0, 0x11, 0x19, 0x72, 0x7b, 0xed, 0xc0, 0x3a, 0x6c, 0xe0, 0x8c, 0xde, 0x3b, 0x91, 0x84, 0x8c, 0xb9, 0xbd, 0xd1, 0xb4, 0x0e, 0xea, 0x38, 0xa5, 0xf7, 0x8f, 0x64, 0xf4, 0x56, 0x39,
0xde, 0x5b, 0x74, 0x51, 0xd4, 0x84, 0xf2, 0x33, 0x3a, 0x55, 0xf0, 0xaf, 0x60, 0xf9, 0x29, 0x6f, 0x8a, 0x1a, 0x50, 0x7c, 0x41, 0xe7, 0x0a, 0xfe, 0x25, 0x2c, 0x3f, 0xa5, 0x17, 0x97, 0x64, 0x3c,
0x71, 0x4d, 0x86, 0x13, 0x6a, 0x6e, 0xa8, 0x89, 0xf7, 0x4a, 0x0f, 0x2c, 0xe7, 0x6f, 0x16, 0xdc, 0xa3, 0xc6, 0x43, 0x4d, 0xbc, 0x5f, 0x78, 0x64, 0xb5, 0xfe, 0x66, 0xc1, 0xad, 0xd4, 0xde, 0x63,
0xce, 0xec, 0x3d, 0xa5, 0xc9, 0x88, 0x71, 0xce, 0xe2, 0x88, 0xa3, 0x5d, 0xa8, 0xd2, 0x88, 0xfb, 0x1a, 0x4f, 0x18, 0xe7, 0x2c, 0x0a, 0x39, 0xda, 0x83, 0x32, 0x0d, 0xb9, 0x17, 0x85, 0x63, 0xad,
0x71, 0x34, 0xd4, 0x9a, 0xaa, 0x78, 0x8d, 0x46, 0xbc, 0x17, 0x0d, 0xa7, 0xc8, 0x86, 0xb5, 0x71, 0xa9, 0x8c, 0x37, 0x68, 0xc8, 0x07, 0xe1, 0x78, 0x8e, 0x6c, 0xd8, 0x98, 0xc6, 0xec, 0x92, 0x08,
0xc2, 0xae, 0x89, 0xd0, 0xfa, 0xaa, 0x38, 0x25, 0xd1, 0xb7, 0x61, 0x95, 0x04, 0x01, 0xe5, 0x5c, 0xad, 0xaf, 0x8c, 0x13, 0x12, 0x7d, 0x17, 0xd6, 0x89, 0xef, 0x53, 0xce, 0x55, 0xb8, 0x36, 0x0f,
0xb9, 0x6b, 0xe3, 0xf8, 0x4b, 0x0b, 0x9c, 0x92, 0x3b, 0xe4, 0xa8, 0xa5, 0x84, 0xb1, 0xd9, 0xe4, 0xbf, 0xb2, 0x22, 0x28, 0x99, 0x43, 0xda, 0x1d, 0x25, 0x8c, 0xcd, 0xa6, 0xd6, 0x08, 0xd6, 0x35,
0x0c, 0x60, 0x55, 0x73, 0x10, 0x82, 0x8d, 0x33, 0xef, 0xb1, 0xd7, 0x7b, 0xea, 0xf9, 0xad, 0x76, 0x07, 0x21, 0xd8, 0x3c, 0x71, 0x9f, 0xba, 0x83, 0xe7, 0xae, 0xd7, 0xe9, 0x76, 0x9d, 0xe1, 0xb0,
0xdb, 0xed, 0xf7, 0x9b, 0xaf, 0xa1, 0x2d, 0x68, 0x78, 0x3d, 0xbf, 0xeb, 0x76, 0x1f, 0xba, 0xb8, 0x71, 0x03, 0x6d, 0x43, 0xdd, 0x1d, 0x78, 0x7d, 0xa7, 0xff, 0xd8, 0xc1, 0xc3, 0x4f, 0x7a, 0xc7,
0xff, 0x71, 0xe7, 0xb4, 0x69, 0xa1, 0x5b, 0xb0, 0xd9, 0xf1, 0x3e, 0xed, 0x0c, 0x5a, 0x83, 0x4e, 0x0d, 0x0b, 0xdd, 0x84, 0xad, 0x9e, 0xfb, 0x59, 0x6f, 0xd4, 0x19, 0xf5, 0x06, 0xae, 0x37, 0x70,
0xcf, 0xf3, 0x7b, 0xde, 0x93, 0xef, 0x37, 0x4b, 0x12, 0x7e, 0x3d, 0xcf, 0xc7, 0xee, 0x27, 0x67, 0x9f, 0xfd, 0xb0, 0x51, 0x90, 0xf0, 0x1b, 0xb8, 0x1e, 0x76, 0x3e, 0x3d, 0x71, 0x86, 0xa3, 0x46,
0x6e, 0x7f, 0xd0, 0x2c, 0x3b, 0xbf, 0x2a, 0x43, 0x43, 0x45, 0xa2, 0x9d, 0x30, 0x41, 0x13, 0x46, 0xb1, 0xf5, 0xeb, 0x22, 0xd4, 0xd5, 0x4d, 0x74, 0x63, 0x26, 0x68, 0xcc, 0x08, 0xfa, 0xf1, 0x4b,
0xd0, 0x0f, 0x9f, 0x03, 0xaf, 0xa3, 0x99, 0xc9, 0x85, 0x4d, 0xaf, 0x80, 0xaa, 0x77, 0xa0, 0x22, 0xe0, 0xd5, 0x5e, 0x98, 0x9c, 0xdb, 0xf4, 0x06, 0xa8, 0x7a, 0x17, 0x4a, 0x42, 0x02, 0xa3, 0xf0,
0x24, 0x30, 0x4a, 0x2f, 0x01, 0x0c, 0x25, 0x99, 0xc3, 0x44, 0x79, 0x21, 0x26, 0x2a, 0x39, 0x4c, 0x1a, 0xc0, 0x50, 0x92, 0x19, 0x4c, 0x14, 0x57, 0x62, 0xa2, 0x94, 0xc1, 0xc4, 0x0e, 0xac, 0x93,
0x6c, 0xc3, 0x2a, 0x19, 0xc9, 0x74, 0x4f, 0xf1, 0xa3, 0x29, 0x59, 0xda, 0x14, 0xc8, 0x7c, 0x16, 0x89, 0x7c, 0xee, 0x09, 0x7e, 0x34, 0x25, 0x53, 0x9b, 0x02, 0x99, 0xc7, 0x02, 0x6e, 0xaf, 0x37,
0x72, 0x7b, 0xf5, 0xa0, 0x7c, 0x58, 0xc1, 0x55, 0xc5, 0xe8, 0x84, 0x1c, 0xdd, 0x87, 0xba, 0x8c, 0x8b, 0x07, 0x25, 0x5c, 0x56, 0x8c, 0x5e, 0xc0, 0xd1, 0x7d, 0xa8, 0xca, 0xdb, 0x9c, 0x12, 0x21,
0xe6, 0x98, 0x08, 0x41, 0x93, 0x48, 0x61, 0xa9, 0x86, 0x81, 0x46, 0xfc, 0x54, 0x73, 0x0a, 0x48, 0x68, 0x1c, 0x2a, 0x2c, 0x55, 0x30, 0xd0, 0x90, 0x1f, 0x6b, 0x4e, 0x0e, 0x69, 0x65, 0x05, 0x9c,
0xab, 0x2a, 0xe0, 0xfc, 0xb7, 0x91, 0xf6, 0xaf, 0x12, 0xd8, 0x45, 0x07, 0xcc, 0x90, 0x80, 0x36, 0xff, 0x36, 0xd2, 0xfe, 0x55, 0x00, 0x3b, 0x1f, 0x80, 0x05, 0x12, 0xd0, 0x26, 0x14, 0x4c, 0xc2,
0xa0, 0x64, 0x0a, 0x76, 0x0d, 0x97, 0x58, 0x88, 0xde, 0x2f, 0xb8, 0xf0, 0xcb, 0xcb, 0x5c, 0x38, 0xae, 0xe0, 0x02, 0x0b, 0xd0, 0x07, 0xb9, 0x10, 0x7e, 0xf5, 0xba, 0x10, 0x2e, 0x34, 0xb4, 0x33,
0xd3, 0x70, 0x94, 0xf3, 0xe6, 0x07, 0xb0, 0xa1, 0x3d, 0x11, 0x98, 0xd8, 0xd9, 0x65, 0x15, 0xda, 0xd1, 0xfc, 0x10, 0x36, 0x75, 0x24, 0x7c, 0x73, 0x77, 0x76, 0x51, 0x5d, 0xed, 0xee, 0x35, 0x57,
0x9d, 0x25, 0xa1, 0xc5, 0x0d, 0x51, 0x80, 0xc7, 0x2e, 0x54, 0xcd, 0x3b, 0xc0, 0xed, 0xca, 0x41, 0x8b, 0xeb, 0x22, 0x07, 0x8f, 0x3d, 0x28, 0x9b, 0x3a, 0xc0, 0xed, 0x52, 0xb3, 0x78, 0x50, 0xc1,
0xf9, 0xb0, 0x86, 0xd7, 0xf4, 0x43, 0xc0, 0xd1, 0x3e, 0x00, 0xe3, 0x7e, 0x8a, 0xfe, 0x15, 0x85, 0x1b, 0xba, 0x10, 0x70, 0x74, 0x0f, 0x80, 0x71, 0x2f, 0x41, 0xff, 0x9a, 0x42, 0x7f, 0x85, 0xf1,
0xfe, 0x1a, 0xe3, 0xa7, 0x9a, 0xe1, 0xfc, 0xc6, 0x82, 0x8a, 0x4a, 0xf2, 0x7b, 0x60, 0xa7, 0xf8, 0x63, 0xcd, 0x68, 0xfd, 0xd6, 0x82, 0x92, 0x7a, 0xe4, 0x77, 0xc1, 0x4e, 0xf0, 0xab, 0xb3, 0xde,
0xd5, 0x55, 0xef, 0xd4, 0xc5, 0xdd, 0x4e, 0xbf, 0xdf, 0xe9, 0x79, 0xcd, 0xd7, 0x50, 0x13, 0xd6, 0xb1, 0x83, 0xfb, 0xbd, 0xe1, 0xb0, 0x37, 0x70, 0x1b, 0x37, 0x50, 0x03, 0x6a, 0x8f, 0x9d, 0xee,
0x1f, 0xba, 0xed, 0x5e, 0x37, 0x2d, 0x91, 0x96, 0xc4, 0xb6, 0xe1, 0x68, 0x7c, 0x37, 0x4b, 0xe8, 0xa0, 0x9f, 0xa4, 0x48, 0x4b, 0x62, 0xdb, 0x70, 0x34, 0xbe, 0x1b, 0x05, 0x74, 0x0b, 0x1a, 0xdd,
0x36, 0x34, 0xdb, 0x2d, 0xcf, 0xff, 0xb4, 0xe3, 0x3e, 0xf5, 0xdb, 0x1f, 0xb7, 0x3c, 0xcf, 0x7d, 0x8e, 0xeb, 0x7d, 0xd6, 0x73, 0x9e, 0x7b, 0xdd, 0x4f, 0x3a, 0xae, 0xeb, 0x3c, 0x6b, 0x14, 0xd1,
0xd2, 0x2c, 0xa3, 0x7d, 0xd8, 0xcd, 0xb8, 0x2d, 0xef, 0xc4, 0x3f, 0xed, 0xf5, 0x07, 0xd9, 0x72, 0x3d, 0xd8, 0x4b, 0xb9, 0x1d, 0xf7, 0xc8, 0x3b, 0x1e, 0x0c, 0x47, 0xe9, 0x72, 0x09, 0xed, 0xc2,
0x05, 0xed, 0xc0, 0x2d, 0xa3, 0x67, 0xae, 0xd8, 0xfe, 0xb3, 0x96, 0xcb, 0xf3, 0x93, 0x62, 0x81, 0x4d, 0xa3, 0x67, 0x29, 0xd9, 0xfe, 0xb3, 0x92, 0x79, 0xe7, 0x47, 0xf9, 0x04, 0xa7, 0xcb, 0x84,
0xd3, 0xcf, 0x84, 0x95, 0x7b, 0xdb, 0x90, 0x0b, 0x6b, 0xfa, 0x59, 0x4c, 0x9f, 0xa1, 0xaf, 0x2c, 0x95, 0xa9, 0x6d, 0xc8, 0x81, 0x0d, 0x5d, 0x16, 0x93, 0x32, 0xf4, 0xb5, 0x15, 0x57, 0x90, 0x51,
0x08, 0x41, 0x4e, 0xcd, 0x91, 0x7e, 0xd5, 0x4c, 0x4e, 0xa4, 0x7b, 0xd1, 0x47, 0x50, 0x1f, 0xcf, 0xd3, 0xd6, 0x55, 0xcd, 0xbc, 0x89, 0x64, 0x2f, 0xfa, 0x18, 0xaa, 0xd3, 0xc5, 0x73, 0x57, 0xe0,
0xd2, 0x5d, 0x81, 0xbb, 0x7e, 0xfc, 0xfa, 0xf3, 0x8b, 0x02, 0xce, 0x6f, 0x41, 0xc7, 0x50, 0x4d, 0xae, 0x1e, 0xbe, 0xf5, 0xf2, 0xa4, 0x80, 0xb3, 0x5b, 0xd0, 0x21, 0x94, 0x93, 0xda, 0xaf, 0xc2,
0xdf, 0x7e, 0xe5, 0xee, 0xfa, 0xf1, 0x76, 0x6e, 0xbb, 0x8a, 0x8a, 0x5e, 0xc5, 0x99, 0x1c, 0xfa, 0x5d, 0x3d, 0xdc, 0xc9, 0x6c, 0x57, 0xb7, 0xa2, 0x57, 0x71, 0x2a, 0x87, 0x3e, 0x82, 0x35, 0x79,
0x10, 0x56, 0x64, 0xbc, 0x74, 0x16, 0xd4, 0x8f, 0xdf, 0x7c, 0x81, 0xe9, 0x52, 0x8b, 0x31, 0x5c, 0x5f, 0xfa, 0x15, 0x54, 0x0f, 0xdf, 0x7e, 0x85, 0xe9, 0x52, 0x8b, 0x31, 0x5c, 0xef, 0x93, 0x00,
0xef, 0x93, 0x00, 0x38, 0x27, 0x91, 0x3f, 0x64, 0x5c, 0xd8, 0x6b, 0x1a, 0x00, 0xe7, 0x24, 0x7a, 0x38, 0x25, 0xa1, 0x37, 0x66, 0x5c, 0xd8, 0x1b, 0x1a, 0x00, 0xa7, 0x24, 0x7c, 0xc6, 0xb8, 0x40,
0xc2, 0xb8, 0x40, 0x1e, 0x40, 0x40, 0x04, 0xbd, 0x8c, 0x13, 0x46, 0x65, 0xa6, 0xcc, 0x95, 0x8c, 0x2e, 0x80, 0x4f, 0x04, 0x3d, 0x8f, 0x62, 0x46, 0xe5, 0x4b, 0x59, 0x4a, 0x19, 0xab, 0x0f, 0x48,
0xc5, 0x07, 0x64, 0x1b, 0xf4, 0x29, 0x39, 0x0d, 0xe8, 0x01, 0xd8, 0x24, 0x09, 0xae, 0xd8, 0x35, 0x37, 0xe8, 0x53, 0x32, 0x1a, 0xd0, 0x23, 0xb0, 0x49, 0xec, 0x5f, 0xb0, 0x4b, 0xea, 0x4d, 0xc8,
0xf5, 0x47, 0xe4, 0x32, 0xa2, 0x62, 0xc8, 0xa2, 0x67, 0xe6, 0xe1, 0xae, 0xa9, 0x88, 0x6c, 0x9b, 0x79, 0x48, 0xc5, 0x98, 0x85, 0x2f, 0x4c, 0xe1, 0xae, 0xa8, 0x1b, 0xd9, 0x31, 0xeb, 0xfd, 0x74,
0xf5, 0x6e, 0xb6, 0xac, 0xde, 0x6f, 0xf4, 0x08, 0x36, 0x48, 0x38, 0x62, 0x91, 0xcf, 0xa9, 0x10, 0x59, 0xd5, 0x6f, 0xf4, 0x04, 0x36, 0x49, 0x30, 0x61, 0xa1, 0xc7, 0xa9, 0x10, 0x2c, 0x3c, 0xe7,
0x2c, 0xba, 0xe4, 0x36, 0x28, 0xff, 0x1c, 0x2c, 0xb0, 0xa6, 0x25, 0x05, 0xfb, 0x46, 0x0e, 0x37, 0x36, 0xa8, 0xf8, 0x34, 0x57, 0x58, 0xd3, 0x91, 0x82, 0x43, 0x23, 0x87, 0xeb, 0x24, 0x4b, 0xa2,
0x48, 0x9e, 0x44, 0x5f, 0x80, 0x06, 0x8b, 0x44, 0x12, 0xfb, 0x23, 0xca, 0xb9, 0x7c, 0xea, 0xea, 0x2f, 0x41, 0x9d, 0x85, 0x22, 0x8e, 0xbc, 0x09, 0xe5, 0x5c, 0x96, 0xba, 0xaa, 0x7a, 0x86, 0x35,
0x2a, 0x0d, 0xd7, 0x15, 0xb3, 0xab, 0x79, 0x52, 0x28, 0x9e, 0xe4, 0x85, 0xd6, 0xb5, 0x90, 0x62, 0xc5, 0xec, 0x6b, 0x9e, 0x14, 0x8a, 0x66, 0x59, 0xa1, 0x9a, 0x16, 0x52, 0xcc, 0x44, 0xe8, 0x2e,
0xa6, 0x42, 0xf7, 0xa0, 0x46, 0xa3, 0x20, 0x99, 0x8e, 0x05, 0x0d, 0xed, 0x86, 0x4e, 0x8e, 0x8c, 0x54, 0x68, 0xe8, 0xc7, 0xf3, 0xa9, 0xa0, 0x81, 0x5d, 0xd7, 0x8f, 0x23, 0x65, 0xc8, 0x64, 0x26,
0x21, 0x8b, 0x99, 0x20, 0x97, 0xdc, 0xde, 0x50, 0x1e, 0x55, 0xdf, 0x88, 0xc0, 0x96, 0x4e, 0xd5, 0xc8, 0x39, 0xb7, 0x37, 0x55, 0x44, 0xd5, 0x37, 0x22, 0xb0, 0xad, 0x9f, 0x6a, 0x16, 0x26, 0x5b,
0x3c, 0x4c, 0x36, 0x95, 0x57, 0xbf, 0xfe, 0x02, 0xaf, 0xce, 0x15, 0x00, 0xe3, 0xdb, 0xa6, 0x98, 0x2a, 0xaa, 0xdf, 0x7c, 0x45, 0x54, 0x97, 0x12, 0x80, 0x89, 0x6d, 0x43, 0x2c, 0xb1, 0xd1, 0x8f,
0x63, 0xa3, 0x1f, 0xc0, 0xee, 0xac, 0x2b, 0x54, 0xab, 0xdc, 0x1f, 0x99, 0x56, 0xc1, 0x6e, 0xaa, 0x60, 0x6f, 0xd1, 0x15, 0xaa, 0x55, 0xee, 0x4d, 0x4c, 0xab, 0x60, 0x37, 0xd4, 0x51, 0xcd, 0x57,
0xa3, 0x0e, 0x5e, 0xd4, 0x52, 0xe0, 0x9d, 0xa0, 0xc0, 0xe7, 0x59, 0xa7, 0xf2, 0x0e, 0xdc, 0x26, 0xb5, 0x14, 0x78, 0xd7, 0xcf, 0xf1, 0x79, 0xda, 0xa9, 0xbc, 0x0b, 0xb7, 0x88, 0x2f, 0xd4, 0xf5,
0x81, 0x50, 0xe1, 0xd3, 0x98, 0xf7, 0x55, 0x2b, 0x66, 0x6f, 0xa9, 0xd8, 0x21, 0xbd, 0x66, 0x92, 0x69, 0xcc, 0x7b, 0xaa, 0x15, 0xb3, 0xb7, 0xd5, 0xdd, 0x21, 0xbd, 0x66, 0x1e, 0x47, 0x57, 0xae,
0xa3, 0x2d, 0x57, 0xf6, 0xce, 0x60, 0x3d, 0x9f, 0x2c, 0xf9, 0x1a, 0x5a, 0xd3, 0x35, 0xf4, 0xed, 0xec, 0x9f, 0x40, 0x2d, 0xfb, 0x58, 0xb2, 0x39, 0xb4, 0xa2, 0x73, 0xe8, 0xc3, 0x6c, 0x0e, 0xcd,
0x7c, 0x0d, 0x2d, 0x74, 0x80, 0x73, 0x4d, 0x64, 0xae, 0xbc, 0xee, 0x7d, 0x02, 0x30, 0x03, 0xf2, 0x75, 0x80, 0x4b, 0x4d, 0x64, 0x26, 0xbd, 0xee, 0x7f, 0x0a, 0xb0, 0x00, 0xf2, 0x0a, 0xa5, 0x5f,
0x02, 0xa5, 0x5f, 0x2d, 0x2a, 0xdd, 0x59, 0xa0, 0x54, 0xee, 0xcf, 0xab, 0xfc, 0x0c, 0x36, 0xe7, 0xcf, 0x2b, 0xdd, 0x5d, 0xa1, 0x54, 0xee, 0xcf, 0xaa, 0xfc, 0x1c, 0xb6, 0x96, 0xa0, 0xbb, 0x42,
0xa0, 0xbb, 0x40, 0xef, 0xbb, 0x45, 0xbd, 0x77, 0x17, 0xe9, 0xd5, 0x4a, 0xa6, 0x79, 0xdd, 0x97, 0xef, 0x7b, 0x79, 0xbd, 0x77, 0x56, 0xe9, 0xd5, 0x4a, 0xe6, 0x59, 0xdd, 0xe7, 0x70, 0x7b, 0xe5,
0x70, 0x67, 0x61, 0x00, 0x17, 0x9c, 0xf0, 0xa0, 0x78, 0x82, 0xf3, 0xe2, 0xc7, 0x20, 0xff, 0xec, 0x05, 0xae, 0x38, 0xe1, 0x51, 0xfe, 0x84, 0xd6, 0xab, 0x8b, 0x41, 0xb6, 0xec, 0xfc, 0x24, 0xd3,
0xfc, 0x28, 0xd7, 0x64, 0x16, 0xd2, 0x00, 0x9d, 0xc0, 0xfd, 0x31, 0x8b, 0x52, 0x40, 0xfb, 0x64, 0x64, 0xe6, 0x9e, 0x01, 0x3a, 0x82, 0xfb, 0x53, 0x16, 0x26, 0x80, 0xf6, 0xc8, 0x78, 0x9c, 0xde,
0x38, 0xcc, 0x62, 0x48, 0x23, 0x72, 0x3e, 0xa4, 0xa1, 0x69, 0x7c, 0xee, 0x8e, 0x59, 0x64, 0x20, 0x21, 0x0d, 0xc9, 0xe9, 0x98, 0x06, 0xa6, 0xf1, 0xb9, 0x33, 0x65, 0xa1, 0x81, 0x78, 0x67, 0x3c,
0xde, 0x1a, 0x0e, 0xb3, 0xe0, 0x29, 0x11, 0xe7, 0xaf, 0x25, 0x68, 0x14, 0x3c, 0x88, 0x3e, 0x98, 0x4e, 0x2f, 0x4f, 0x89, 0xb4, 0xfe, 0x5a, 0x80, 0x7a, 0x2e, 0x82, 0xe8, 0xc3, 0x45, 0xee, 0xd4,
0xd5, 0x4e, 0xdd, 0x52, 0x7c, 0x71, 0x89, 0xaf, 0x5f, 0xae, 0x68, 0x96, 0x3e, 0x5f, 0xd1, 0x2c, 0x2d, 0xc5, 0x97, 0xaf, 0x89, 0xf5, 0xeb, 0x25, 0xcd, 0xc2, 0x17, 0x4b, 0x9a, 0xc5, 0xd7, 0x4c,
0xbf, 0x64, 0xd1, 0xbc, 0x0f, 0x75, 0x53, 0x96, 0xd4, 0xec, 0xa4, 0x3b, 0x8e, 0xb4, 0x52, 0xc9, 0x9a, 0xf7, 0xa1, 0x6a, 0xd2, 0x92, 0x9a, 0x9d, 0x74, 0xc7, 0x91, 0x64, 0x2a, 0x39, 0x3a, 0xed,
0xd1, 0x69, 0x0f, 0xaa, 0xe3, 0x98, 0x33, 0xd5, 0x28, 0xcb, 0x4a, 0xbc, 0x82, 0x33, 0xfa, 0x7f, 0x43, 0x79, 0x1a, 0x71, 0xa6, 0x1a, 0x65, 0x99, 0x89, 0xd7, 0x70, 0x4a, 0xff, 0x8f, 0x30, 0xdd,
0x84, 0x69, 0x27, 0x84, 0xad, 0x1b, 0x20, 0x9a, 0x37, 0xd4, 0xba, 0x61, 0x68, 0xda, 0x34, 0x95, 0x0a, 0x60, 0xfb, 0x0a, 0x88, 0x96, 0x0d, 0xb5, 0xae, 0x18, 0x9a, 0x34, 0x4d, 0x85, 0x7c, 0x23,
0x8a, 0x8d, 0x74, 0x66, 0x7c, 0xb9, 0x68, 0xbc, 0xf3, 0x7b, 0x0b, 0x6e, 0x65, 0xc7, 0x74, 0xa2, 0x9d, 0x1a, 0x5f, 0xcc, 0x1b, 0xdf, 0xfa, 0x8d, 0x05, 0x5b, 0x4b, 0xa3, 0x95, 0x6c, 0x71, 0x4d,
0x6b, 0x26, 0x88, 0x7a, 0x19, 0x1f, 0xc2, 0xfe, 0x4f, 0x12, 0x32, 0x1e, 0xd3, 0xd0, 0x9f, 0x15, 0x63, 0x68, 0x0e, 0x48, 0x48, 0x99, 0xe3, 0x38, 0x3b, 0x0f, 0x89, 0x98, 0xc5, 0xd4, 0x4c, 0x90,
0x90, 0xfc, 0xb8, 0xa0, 0xe7, 0xcb, 0xbb, 0x46, 0x68, 0xd9, 0xeb, 0x7a, 0x29, 0x67, 0x53, 0x33, 0x0b, 0x86, 0x6c, 0xc2, 0xfc, 0x0b, 0xc2, 0x74, 0x13, 0x56, 0xd4, 0x4d, 0x98, 0x62, 0xc8, 0xe6,
0x6b, 0x6a, 0x62, 0xf9, 0xa0, 0xb9, 0x0f, 0x30, 0x9e, 0x9c, 0x0f, 0x59, 0xe0, 0x4b, 0xf7, 0x55, 0xe1, 0x1d, 0x68, 0x30, 0xde, 0x61, 0x71, 0x10, 0x47, 0x53, 0xd3, 0x48, 0xa9, 0x38, 0x97, 0xf1,
0xd4, 0x9e, 0x9a, 0xe6, 0x3c, 0xa6, 0x53, 0xe7, 0xd7, 0x16, 0x6c, 0xce, 0x0d, 0x81, 0xb2, 0x19, 0x15, 0x7e, 0xeb, 0x1f, 0x56, 0x06, 0xb7, 0x98, 0xfe, 0x74, 0x46, 0xb9, 0x18, 0x45, 0xdf, 0x8f,
0x37, 0x2d, 0xac, 0x71, 0x45, 0x4a, 0xca, 0x6a, 0xcc, 0xd9, 0x65, 0x44, 0xc4, 0x24, 0xa1, 0xe6, 0xd8, 0x75, 0x15, 0xdb, 0xf4, 0xeb, 0x19, 0xcf, 0x65, 0xbf, 0xee, 0x4a, 0xe7, 0xaf, 0x9d, 0x6b,
0xfc, 0x19, 0x43, 0xb6, 0x8b, 0xc1, 0x15, 0x61, 0xba, 0x5d, 0x2c, 0xeb, 0x76, 0x51, 0x31, 0x64, 0x97, 0x07, 0xe6, 0xd2, 0xd5, 0x81, 0xf9, 0x01, 0xd4, 0x02, 0xc6, 0xa7, 0x63, 0x32, 0xd7, 0xaa,
0x9b, 0xf3, 0x16, 0x34, 0x19, 0x6f, 0xb1, 0x24, 0x4c, 0xe2, 0xb1, 0x69, 0xf9, 0x94, 0x35, 0x55, 0xd7, 0xcc, 0x88, 0xa4, 0x79, 0x4a, 0xfd, 0xca, 0xe1, 0x75, 0xfd, 0x8d, 0x87, 0xd7, 0xd6, 0xef,
0x7c, 0x83, 0xef, 0xfc, 0xc3, 0xca, 0x65, 0x18, 0xa6, 0x3f, 0x9e, 0x50, 0x2e, 0x06, 0xf1, 0x77, 0x2c, 0xb8, 0x97, 0xba, 0xec, 0x04, 0x4c, 0xe0, 0xe5, 0xf1, 0x76, 0xb5, 0xe7, 0xcb, 0x5e, 0x14,
0x63, 0xb6, 0xac, 0xb7, 0x30, 0x93, 0x45, 0x2e, 0x46, 0x72, 0xb2, 0xf0, 0x64, 0x98, 0x96, 0x3a, 0xae, 0x7a, 0xb1, 0xd2, 0xc4, 0xe2, 0x9b, 0x9b, 0xf8, 0x07, 0x0b, 0xee, 0x66, 0x10, 0x19, 0xfa,
0x66, 0x7e, 0xb4, 0xaf, 0xdc, 0x1c, 0xed, 0xdf, 0x80, 0xf5, 0x90, 0xf1, 0xf1, 0x90, 0x4c, 0xb5, 0x74, 0xfc, 0x7f, 0x7d, 0x37, 0xad, 0xbf, 0x5b, 0xf0, 0xd6, 0x6a, 0x18, 0x61, 0xca, 0xa7, 0x51,
0xea, 0x15, 0x33, 0xcc, 0x69, 0x9e, 0x52, 0xbf, 0x70, 0xcc, 0x5e, 0x7d, 0xe5, 0x31, 0xdb, 0xf9, 0xc8, 0xe9, 0x35, 0x26, 0x7f, 0x07, 0x2a, 0xe9, 0x51, 0x2f, 0x49, 0x41, 0x99, 0x82, 0x8c, 0x17,
0xad, 0x05, 0xfb, 0xd9, 0x95, 0xdd, 0x90, 0x09, 0x3c, 0x3f, 0x88, 0x2f, 0xbe, 0xf9, 0xfc, 0x2d, 0x1b, 0xe4, 0x73, 0x93, 0x23, 0x9d, 0xea, 0x03, 0x8a, 0x0a, 0xe1, 0x29, 0x2d, 0xcf, 0x3b, 0x8f,
0x4a, 0x37, 0x6f, 0xb1, 0xd0, 0xc4, 0xf2, 0xab, 0x9b, 0xf8, 0x07, 0x0b, 0xee, 0xe5, 0x72, 0x27, 0x49, 0x28, 0x8c, 0x47, 0x9a, 0xb8, 0xe2, 0xee, 0xda, 0x55, 0x77, 0xef, 0x01, 0xe8, 0x16, 0xc9,
0x0a, 0xe8, 0xf0, 0xff, 0x3a, 0x36, 0xce, 0xdf, 0x2d, 0x78, 0x7d, 0x31, 0x8c, 0x30, 0xe5, 0xe3, 0x9b, 0xc5, 0xcc, 0x8c, 0xc9, 0x15, 0xcd, 0x39, 0x89, 0x59, 0x0b, 0xc3, 0xee, 0x55, 0x4f, 0x9f,
0x38, 0xe2, 0x74, 0x89, 0xc9, 0xdf, 0x82, 0x5a, 0x76, 0xd4, 0x73, 0x8a, 0x65, 0x2e, 0x2b, 0xf1, 0x51, 0x72, 0x49, 0xff, 0x63, 0xdc, 0xb4, 0x7e, 0x00, 0x0f, 0x32, 0xe9, 0x49, 0x57, 0x80, 0xe5,
0x6c, 0x83, 0x2c, 0x0c, 0x72, 0xf8, 0x54, 0x1d, 0x4b, 0x59, 0x21, 0x3c, 0xa3, 0x67, 0xc9, 0x5b, 0x6e, 0xec, 0x1a, 0xed, 0x79, 0x6b, 0x0b, 0xcb, 0xd6, 0xfe, 0xc9, 0x82, 0xea, 0x73, 0xf2, 0x62,
0xc9, 0x27, 0xef, 0xfc, 0x75, 0x57, 0x6e, 0x5e, 0x77, 0x1f, 0x40, 0x37, 0x73, 0xfe, 0x24, 0x61, 0x96, 0xb4, 0x4e, 0x0d, 0x28, 0x72, 0x76, 0x6e, 0xfe, 0xb2, 0x92, 0x9f, 0x32, 0xd1, 0x08, 0x36,
0x66, 0xa0, 0xaf, 0x69, 0xce, 0x59, 0xc2, 0x1c, 0x0c, 0x3b, 0x37, 0x6f, 0xfa, 0x84, 0x92, 0x6b, 0xa1, 0x5c, 0x90, 0xc9, 0x54, 0xed, 0x2f, 0xe1, 0x05, 0x43, 0x1e, 0x2a, 0xa2, 0x29, 0xf3, 0x55,
0xfa, 0x1f, 0xe3, 0xc6, 0xf9, 0x1e, 0xbc, 0x91, 0x2b, 0xa4, 0xfa, 0xad, 0x9a, 0xef, 0x1b, 0x97, 0x78, 0x6b, 0x58, 0x13, 0x6a, 0x32, 0x27, 0xf3, 0x71, 0x44, 0x12, 0xbc, 0x24, 0xa4, 0x5e, 0x09,
0x68, 0x2f, 0x5a, 0x5b, 0x9a, 0xb7, 0xf6, 0x4f, 0x16, 0xd4, 0x9f, 0x92, 0x67, 0x93, 0xb4, 0xc9, 0x02, 0x16, 0x9e, 0x9b, 0xd0, 0x26, 0xa4, 0x4c, 0x97, 0x17, 0x84, 0x5f, 0xa8, 0x80, 0xd6, 0xb0,
0x6b, 0x42, 0x99, 0xb3, 0x4b, 0x53, 0xfc, 0xe4, 0xa7, 0x2c, 0x34, 0x82, 0x8d, 0x28, 0x17, 0x64, 0xfa, 0x46, 0x2d, 0xa8, 0x89, 0x0b, 0x16, 0x07, 0xc7, 0x24, 0x96, 0x71, 0x30, 0xf3, 0x62, 0x8e,
0x34, 0x56, 0xfb, 0x2b, 0x78, 0xc6, 0x90, 0x87, 0x8a, 0x78, 0xcc, 0x02, 0xe5, 0xde, 0x75, 0xac, 0xd7, 0xfa, 0x05, 0xec, 0x67, 0x1c, 0x48, 0xc2, 0x92, 0xf4, 0x45, 0x36, 0x6c, 0x5c, 0xd2, 0x58,
0x09, 0xf5, 0x1f, 0x02, 0x99, 0x0e, 0x63, 0x92, 0xe2, 0x25, 0x25, 0xf5, 0x4a, 0x18, 0xb2, 0xe8, 0x96, 0x23, 0xe5, 0x53, 0x1d, 0x27, 0xa4, 0x3c, 0xef, 0x2c, 0x8e, 0x26, 0xc6, 0x25, 0xf5, 0x2d,
0xd2, 0xb8, 0x36, 0x25, 0x65, 0x61, 0xbf, 0x22, 0xfc, 0x4a, 0x39, 0x74, 0x1d, 0xab, 0x6f, 0xe4, 0xc7, 0x3f, 0x11, 0x99, 0x3f, 0xaa, 0x0a, 0x22, 0x92, 0xe7, 0xcb, 0xb1, 0x9a, 0x86, 0x62, 0xa4,
0xc0, 0xba, 0xb8, 0x62, 0x49, 0x78, 0x4a, 0x12, 0xe9, 0x07, 0x33, 0xd9, 0x16, 0x78, 0xce, 0xcf, 0x9c, 0x94, 0x53, 0x58, 0x0d, 0xe7, 0x78, 0xad, 0xdf, 0x5b, 0x80, 0xae, 0x1a, 0xf0, 0x92, 0x83,
0x61, 0x2f, 0x77, 0x81, 0xd4, 0x2d, 0x69, 0x07, 0x67, 0xc3, 0xda, 0x35, 0x4d, 0x78, 0x5a, 0xd0, 0x3f, 0x86, 0x72, 0xda, 0xf7, 0x69, 0x44, 0x67, 0x0a, 0xf3, 0xf5, 0xae, 0xe0, 0x74, 0x17, 0x7a,
0x1b, 0x38, 0x25, 0xe5, 0x79, 0x17, 0x49, 0x3c, 0x32, 0x57, 0x52, 0xdf, 0x72, 0x50, 0x15, 0xb1, 0x4f, 0x6a, 0x50, 0x32, 0x49, 0xf6, 0xb8, 0xbd, 0x52, 0x03, 0x4e, 0xc5, 0x5a, 0x7f, 0xb6, 0xe0,
0xf9, 0x4b, 0xad, 0x24, 0x62, 0x79, 0x7e, 0x10, 0x47, 0x82, 0x46, 0x62, 0xa0, 0x2e, 0x29, 0xe7, 0xfe, 0x55, 0xdd, 0xbd, 0x30, 0xa0, 0x3f, 0x7b, 0x8d, 0x58, 0x7d, 0x71, 0x93, 0x77, 0x60, 0x3d,
0xc5, 0x75, 0x5c, 0xe0, 0x39, 0xbf, 0xb3, 0x00, 0xdd, 0x34, 0xe0, 0x39, 0x07, 0x7f, 0x04, 0xd5, 0x3a, 0x3b, 0xe3, 0x54, 0x98, 0xe8, 0x1a, 0x4a, 0xde, 0x02, 0x67, 0x3f, 0xa7, 0xe6, 0x1f, 0x4d,
0xac, 0x43, 0xd5, 0x88, 0xce, 0xb5, 0x10, 0xcb, 0xaf, 0x82, 0xb3, 0x5d, 0xe8, 0x5d, 0xa9, 0x41, 0xf5, 0xbd, 0x8c, 0x91, 0x52, 0x8a, 0x91, 0xd6, 0x5f, 0x2c, 0xd8, 0xbd, 0xc6, 0x0b, 0xf4, 0x14,
0xc9, 0xa4, 0xd5, 0xe3, 0xce, 0x42, 0x0d, 0x38, 0x13, 0x73, 0xfe, 0x6c, 0xc1, 0xfd, 0x9b, 0xba, 0xca, 0x66, 0x42, 0x49, 0xfa, 0x9d, 0x87, 0x2f, 0xb3, 0x51, 0x6d, 0x6a, 0x1b, 0xc2, 0xb4, 0x3e,
0x3b, 0x51, 0x48, 0x7f, 0xfa, 0x12, 0xbe, 0xfa, 0xfc, 0x26, 0x6f, 0xc3, 0x6a, 0x7c, 0x71, 0xc1, 0xa9, 0x82, 0xfd, 0x33, 0xa8, 0xe7, 0x96, 0x56, 0x74, 0x12, 0x1f, 0xe5, 0x3b, 0x89, 0xb7, 0x5f,
0xa9, 0x30, 0xde, 0x35, 0x94, 0x8c, 0x02, 0x67, 0x3f, 0xa3, 0xe6, 0xbf, 0x57, 0xf5, 0x3d, 0x8f, 0x79, 0x58, 0x1a, 0x95, 0x45, 0x67, 0xf1, 0xb8, 0xfe, 0x79, 0xb5, 0xfd, 0xf0, 0x83, 0x64, 0xe7,
0x91, 0x4a, 0x86, 0x11, 0xe7, 0x2f, 0x16, 0xec, 0x2c, 0xb9, 0x05, 0x7a, 0x0c, 0x55, 0x33, 0x4b, 0xe9, 0xba, 0xfa, 0xfa, 0xc6, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x28, 0xf1, 0xb6, 0x6d, 0x8a,
0xa5, 0x9d, 0xd9, 0xdb, 0xcf, 0xb3, 0x51, 0x6d, 0x3a, 0x32, 0x84, 0x69, 0xd2, 0x32, 0x05, 0x7b, 0x16, 0x00, 0x00,
0x17, 0xd0, 0x28, 0x2c, 0x2d, 0xe8, 0x79, 0x3e, 0x2c, 0xf6, 0x3c, 0x6f, 0xbe, 0xf0, 0xb0, 0xcc,
0x2b, 0xb3, 0x1e, 0xe8, 0x61, 0xe3, 0xb3, 0xfa, 0xd1, 0xdb, 0xef, 0xa7, 0x3b, 0xcf, 0x57, 0xd5,
0xd7, 0xd7, 0xfe, 0x1d, 0x00, 0x00, 0xff, 0xff, 0x7d, 0x68, 0x3c, 0x26, 0x34, 0x17, 0x00, 0x00,
} }

View File

@ -117,13 +117,6 @@ message CommunityCategory {
int32 position = 3; int32 position = 3;
} }
message CommunityInvitation {
bytes wrapped_community_description = 1; // community in a wrapped & signed (by owner) protocol message
bytes grant = 2;
string chat_id = 3;
bytes public_key = 4;
}
message RevealedAccount { message RevealedAccount {
string address = 1; string address = 1;
bytes signature = 2; bytes signature = 2;

View File

@ -1,27 +0,0 @@
package requests
import (
"errors"
"github.com/status-im/status-go/eth-node/types"
)
var ErrInviteUsersToCommunityInvalidID = errors.New("invite-users-to-community: invalid id")
var ErrInviteUsersToCommunityEmptyUsers = errors.New("invite-users-to-community: empty users")
type InviteUsersToCommunity struct {
CommunityID types.HexBytes `json:"communityId"`
Users []types.HexBytes `json:"users"`
}
func (j *InviteUsersToCommunity) Validate() error {
if len(j.CommunityID) == 0 {
return ErrInviteUsersToCommunityInvalidID
}
if len(j.Users) == 0 {
return ErrInviteUsersToCommunityEmptyUsers
}
return nil
}

View File

@ -247,8 +247,6 @@ func (m *StatusMessage) HandleApplication() error {
return m.unmarshalProtobufData(new(protobuf.GroupChatInvitation)) return m.unmarshalProtobufData(new(protobuf.GroupChatInvitation))
case protobuf.ApplicationMetadataMessage_COMMUNITY_DESCRIPTION: case protobuf.ApplicationMetadataMessage_COMMUNITY_DESCRIPTION:
return m.unmarshalProtobufData(new(protobuf.CommunityDescription)) return m.unmarshalProtobufData(new(protobuf.CommunityDescription))
case protobuf.ApplicationMetadataMessage_COMMUNITY_INVITATION:
return m.unmarshalProtobufData(new(protobuf.CommunityInvitation))
case protobuf.ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_JOIN: case protobuf.ApplicationMetadataMessage_COMMUNITY_REQUEST_TO_JOIN:
return m.unmarshalProtobufData(new(protobuf.CommunityRequestToJoin)) return m.unmarshalProtobufData(new(protobuf.CommunityRequestToJoin))
case protobuf.ApplicationMetadataMessage_COMMUNITY_EDIT_SHARED_ADDRESSES: case protobuf.ApplicationMetadataMessage_COMMUNITY_EDIT_SHARED_ADDRESSES:

View File

@ -486,14 +486,6 @@ func (api *PublicAPI) DeleteCommunityChat(communityID types.HexBytes, chatID str
return api.service.messenger.DeleteCommunityChat(communityID, chatID) return api.service.messenger.DeleteCommunityChat(communityID, chatID)
} }
// InviteUsersToCommunity invites the users with pks to the community with ID
//
// Deprecated: Community invites are no longer sent to users.
// Instead, the community is just shared and access requests is required from users.
func (api *PublicAPI) InviteUsersToCommunity(request *requests.InviteUsersToCommunity) (*protocol.MessengerResponse, error) {
return api.service.messenger.InviteUsersToCommunity(request)
}
// ShareCommunity share the community with a set of users // ShareCommunity share the community with a set of users
func (api *PublicAPI) ShareCommunity(request *requests.ShareCommunity) (*protocol.MessengerResponse, error) { func (api *PublicAPI) ShareCommunity(request *requests.ShareCommunity) (*protocol.MessengerResponse, error) {
return api.service.messenger.ShareCommunity(request) return api.service.messenger.ShareCommunity(request)