fix(community): fix editing a community channel loses the members

This commit is contained in:
Jonathan Rainville 2024-03-07 12:30:23 -05:00
parent e3810148d8
commit 605e3a4ed0
2 changed files with 18 additions and 0 deletions

View File

@ -621,6 +621,15 @@ func (o *Community) GetMember(pk *ecdsa.PublicKey) *protobuf.CommunityMember {
return o.getMember(pk) return o.getMember(pk)
} }
func (o *Community) GetChat(chatID string) (*protobuf.CommunityChat, error) {
chat, ok := o.config.CommunityDescription.Chats[chatID]
if !ok {
return nil, ErrChatNotFound
}
return chat, nil
}
func (o *Community) getChatMember(pk *ecdsa.PublicKey, chatID string) *protobuf.CommunityMember { func (o *Community) getChatMember(pk *ecdsa.PublicKey, chatID string) *protobuf.CommunityMember {
if !o.hasMember(pk) { if !o.hasMember(pk) {
return nil return nil

View File

@ -1469,6 +1469,15 @@ func (m *Manager) EditChat(communityID types.HexBytes, chatID string, chat *prot
chatID = strings.TrimPrefix(chatID, communityID.String()) chatID = strings.TrimPrefix(chatID, communityID.String())
} }
oldChat, err := community.GetChat(chatID)
if err != nil {
return nil, nil, err
}
// We can't edit permissions and members with an Edit, so we set to what we had, otherwise they will be lost
chat.Permissions = oldChat.Permissions
chat.Members = oldChat.Members
changes, err := community.EditChat(chatID, chat) changes, err := community.EditChat(chatID, chat)
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err