diff --git a/server/channels/app/channel.go b/server/channels/app/channel.go index 27ac77c8e8..b4c17749fc 100644 --- a/server/channels/app/channel.go +++ b/server/channels/app/channel.go @@ -1597,11 +1597,19 @@ func (a *App) AddUserToChannel(c request.CTX, user *model.User, channel *model.C return nil, err } - message := model.NewWebSocketEvent(model.WebsocketEventUserAdded, "", channel.Id, "", nil, "") + // We are sending separate websocket events to the user added and to the channel + // This is to get around potential cluster syncing issues where other nodes may not receive the most up to date channel members + // There is likely some issue syncing these that needs to be looked at, but this is the current fix. + message := model.NewWebSocketEvent(model.WebsocketEventUserAdded, "", channel.Id, "", map[string]bool{user.Id: true}, "") message.Add("user_id", user.Id) message.Add("team_id", channel.TeamId) a.Publish(message) + userMessage := model.NewWebSocketEvent(model.WebsocketEventUserAdded, "", channel.Id, user.Id, nil, "") + userMessage.Add("user_id", user.Id) + userMessage.Add("team_id", channel.TeamId) + a.Publish(userMessage) + return newMember, nil }