fix: promote self to community control node event if we are not a community member (#4270)
This commit is contained in:
parent
1d08b403e6
commit
b15fa6d2c8
|
@ -4879,12 +4879,7 @@ func (m *Manager) createCommunityTokenPermission(request *requests.CreateCommuni
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Manager) PromoteSelfToControlNode(communityID types.HexBytes, clock uint64) (*CommunityChanges, error) {
|
func (m *Manager) PromoteSelfToControlNode(community *Community, clock uint64) (*CommunityChanges, error) {
|
||||||
community, err := m.GetByID(communityID)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
if community == nil {
|
if community == nil {
|
||||||
return nil, ErrOrgNotFound
|
return nil, ErrOrgNotFound
|
||||||
}
|
}
|
||||||
|
@ -4921,7 +4916,23 @@ func (m *Manager) promoteSelfToControlNode(community *Community, clock uint64) (
|
||||||
}
|
}
|
||||||
community.config.ControlDevice = true
|
community.config.ControlDevice = true
|
||||||
|
|
||||||
|
if exists := community.HasMember(&m.identity.PublicKey); !exists {
|
||||||
|
ownerRole := []protobuf.CommunityMember_Roles{protobuf.CommunityMember_ROLE_OWNER}
|
||||||
|
_, err = community.AddMember(&m.identity.PublicKey, ownerRole)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
for channelID := range community.Chats() {
|
||||||
|
_, err = community.AddMemberToChat(channelID, &m.identity.PublicKey, ownerRole)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
_, err = community.AddRoleToMember(&m.identity.PublicKey, protobuf.CommunityMember_ROLE_OWNER)
|
_, err = community.AddRoleToMember(&m.identity.PublicKey, protobuf.CommunityMember_ROLE_OWNER)
|
||||||
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,7 +44,6 @@ import (
|
||||||
localnotifications "github.com/status-im/status-go/services/local-notifications"
|
localnotifications "github.com/status-im/status-go/services/local-notifications"
|
||||||
"github.com/status-im/status-go/services/wallet/bigint"
|
"github.com/status-im/status-go/services/wallet/bigint"
|
||||||
"github.com/status-im/status-go/signal"
|
"github.com/status-im/status-go/signal"
|
||||||
"github.com/status-im/status-go/transactions"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// 7 days interval
|
// 7 days interval
|
||||||
|
@ -6053,17 +6052,21 @@ func (m *Messenger) processCommunityChanges(messageState *ReceivedMessageState)
|
||||||
messageState.Response.CommunityChanges = nil
|
messageState.Response.CommunityChanges = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Messenger) SetCommunitySignerPubKey(ctx context.Context, communityID []byte, chainID uint64, contractAddress string, txArgs transactions.SendTxArgs, password string, newSignerPubKey string) (string, error) {
|
|
||||||
if m.communityTokensService == nil {
|
|
||||||
return "", errors.New("tokens service not initialized")
|
|
||||||
}
|
|
||||||
|
|
||||||
return m.communityTokensService.SetSignerPubKey(ctx, chainID, contractAddress, txArgs, password, newSignerPubKey)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (m *Messenger) PromoteSelfToControlNode(communityID types.HexBytes) (*MessengerResponse, error) {
|
func (m *Messenger) PromoteSelfToControlNode(communityID types.HexBytes) (*MessengerResponse, error) {
|
||||||
clock, _ := m.getLastClockWithRelatedChat()
|
clock, _ := m.getLastClockWithRelatedChat()
|
||||||
changes, err := m.communitiesManager.PromoteSelfToControlNode(communityID, clock)
|
|
||||||
|
community, err := m.FetchCommunity(&FetchCommunityRequest{
|
||||||
|
CommunityKey: types.EncodeHex(communityID),
|
||||||
|
Shard: nil,
|
||||||
|
TryDatabase: true,
|
||||||
|
WaitForResponse: true,
|
||||||
|
})
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
changes, err := m.communitiesManager.PromoteSelfToControlNode(community, clock)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue