MM-52600: [Shared Channels] Shared channels do not sync channel membership (#30976)
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
0082e3e94d
Коммит
fa1c77d9b0
@@ -1711,6 +1711,13 @@ func (a *App) addUserToChannel(c request.CTX, user *model.User, channel *model.C
|
||||
a.Srv().Platform().InvalidateChannelCacheForUser(user.Id)
|
||||
a.invalidateCacheForChannelMembers(channel.Id)
|
||||
|
||||
// Synchronize membership change for shared channels
|
||||
if channel.IsShared() {
|
||||
if scs := a.Srv().Platform().GetSharedChannelService(); scs != nil {
|
||||
scs.HandleMembershipChange(channel.Id, user.Id, true, user.GetRemoteID())
|
||||
}
|
||||
}
|
||||
|
||||
return newMember, nil
|
||||
}
|
||||
|
||||
@@ -2236,7 +2243,12 @@ func (s *Server) getChannelMemberLastViewedAt(c request.CTX, channelID string, u
|
||||
}
|
||||
|
||||
func (a *App) GetChannelMembersPage(c request.CTX, channelID string, page, perPage int) (model.ChannelMembers, *model.AppError) {
|
||||
channelMembers, err := a.Srv().Store().Channel().GetMembers(channelID, page*perPage, perPage)
|
||||
opts := model.ChannelMembersGetOptions{
|
||||
ChannelID: channelID,
|
||||
Offset: page * perPage,
|
||||
Limit: perPage,
|
||||
}
|
||||
channelMembers, err := a.Srv().Store().Channel().GetMembers(opts)
|
||||
if err != nil {
|
||||
return nil, model.NewAppError("GetChannelMembersPage", "app.channel.get_members.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
|
||||
}
|
||||
@@ -2740,6 +2752,14 @@ func (a *App) removeUserFromChannel(c request.CTX, userIDToRemove string, remove
|
||||
userMsg.Add("remover_id", removerUserId)
|
||||
a.Publish(userMsg)
|
||||
|
||||
// Synchronize membership change for shared channels
|
||||
if channel.IsShared() {
|
||||
// isAdd=false, empty remoteId means locally initiated
|
||||
if scs := a.Srv().Platform().GetSharedChannelService(); scs != nil {
|
||||
scs.HandleMembershipChange(channel.Id, userIDToRemove, false, "")
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -3639,7 +3659,12 @@ func (a *App) forEachChannelMember(c request.CTX, channelID string, f func(model
|
||||
page := 0
|
||||
|
||||
for {
|
||||
channelMembers, err := a.Srv().Store().Channel().GetMembers(channelID, page*perPage, perPage)
|
||||
opts := model.ChannelMembersGetOptions{
|
||||
ChannelID: channelID,
|
||||
Offset: page * perPage,
|
||||
Limit: perPage,
|
||||
}
|
||||
channelMembers, err := a.Srv().Store().Channel().GetMembers(opts)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user