Fixing websockets updates for promote/demote (#11799)

* Fixing websockets updates for promote/demote

* Adding extra test check

* Addressing PR comments
Этот коммит содержится в:
Jesús Espino
2019-08-16 08:39:34 +02:00
коммит произвёл GitHub
родитель 135acbb0b0
Коммит 83197ec5ff
3 изменённых файлов: 50 добавлений и 10 удалений

Просмотреть файл

@@ -2247,14 +2247,31 @@ func (a *App) PromoteGuestToUser(user *model.User, requestorId string) *model.Ap
promotedUser, err := a.GetUser(user.Id)
if err != nil {
return err
mlog.Error(err.Error())
} else {
a.sendUpdatedUserEvent(*promotedUser)
a.UpdateSessionsIsGuest(promotedUser.Id, promotedUser.IsGuest())
}
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_USER_UPDATED, "", "", "", nil)
message.Add("user", promotedUser)
a.Publish(message)
teamMembers, err := a.GetTeamMembersForUser(user.Id)
if err != nil {
mlog.Error(err.Error())
}
a.UpdateSessionsIsGuest(promotedUser.Id, promotedUser.IsGuest())
for _, member := range teamMembers {
a.sendUpdatedMemberRoleEvent(user.Id, member)
channelMembers, err := a.GetChannelMembersForUser(member.TeamId, user.Id)
if err != nil {
mlog.Error(err.Error())
}
for _, member := range *channelMembers {
evt := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_CHANNEL_MEMBER_UPDATED, "", "", user.Id, nil)
evt.Add("channelMember", member.ToJson())
a.Publish(evt)
}
}
return nil
}
@@ -2269,14 +2286,31 @@ func (a *App) DemoteUserToGuest(user *model.User) *model.AppError {
demotedUser, err := a.GetUser(user.Id)
if err != nil {
return err
mlog.Error(err.Error())
} else {
a.sendUpdatedUserEvent(*demotedUser)
a.UpdateSessionsIsGuest(demotedUser.Id, demotedUser.IsGuest())
}
message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_USER_UPDATED, "", "", "", nil)
message.Add("user", demotedUser)
a.Publish(message)
teamMembers, err := a.GetTeamMembersForUser(user.Id)
if err != nil {
mlog.Error(err.Error())
}
a.UpdateSessionsIsGuest(demotedUser.Id, demotedUser.IsGuest())
for _, member := range teamMembers {
a.sendUpdatedMemberRoleEvent(user.Id, member)
channelMembers, err := a.GetChannelMembersForUser(member.TeamId, user.Id)
if err != nil {
mlog.Error(err.Error())
}
for _, member := range *channelMembers {
evt := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_CHANNEL_MEMBER_UPDATED, "", "", user.Id, nil)
evt.Add("channelMember", member.ToJson())
a.Publish(evt)
}
}
return nil
}