diff --git a/api4/channel_test.go b/api4/channel_test.go index a367471460..4fb0348e31 100644 --- a/api4/channel_test.go +++ b/api4/channel_test.go @@ -1976,6 +1976,10 @@ func TestUpdateChannelMemberSchemeRoles(t *testing.T) { th := Setup().InitBasic() defer th.TearDown() SystemAdminClient := th.SystemAdminClient + WebSocketClient, err := th.CreateWebSocketClient() + WebSocketClient.Listen() + require.Nil(t, err) + th.LoginBasic() s1 := &model.SchemeRoles{ @@ -1986,6 +1990,21 @@ func TestUpdateChannelMemberSchemeRoles(t *testing.T) { _, r1 := SystemAdminClient.UpdateChannelMemberSchemeRoles(th.BasicChannel.Id, th.BasicUser.Id, s1) CheckNoError(t, r1) + timeout := time.After(600 * time.Millisecond) + waiting := true + for waiting { + select { + case event := <-WebSocketClient.EventChannel: + if event.Event == model.WEBSOCKET_EVENT_CHANNEL_MEMBER_UPDATED { + require.Equal(t, model.WEBSOCKET_EVENT_CHANNEL_MEMBER_UPDATED, event.Event) + waiting = false + } + case <-timeout: + require.Fail(t, "Should have received event channel member websocket event and not timedout") + waiting = false + } + } + tm1, rtm1 := SystemAdminClient.GetChannelMember(th.BasicChannel.Id, th.BasicUser.Id, "") CheckNoError(t, rtm1) assert.Equal(t, false, tm1.SchemeGuest) diff --git a/app/channel.go b/app/channel.go index 9fe6219283..963fc9b23a 100644 --- a/app/channel.go +++ b/app/channel.go @@ -755,6 +755,11 @@ func (a *App) UpdateChannelMemberSchemeRoles(channelId string, userId string, is return nil, err } + // Notify the clients that the member notify props changed + message := model.NewWebSocketEvent(model.WEBSOCKET_EVENT_CHANNEL_MEMBER_UPDATED, "", "", userId, nil) + message.Add("channelMember", member.ToJson()) + a.Publish(message) + a.InvalidateCacheForUser(userId) return member, nil }