[MM-63933] Don't include channels from an archived team unless specified in GetChannelsForUser (#31163)
* [MM-63933] Don't include channels from an archived team unless specified in GetChannelsForUser * PR feedback --------- Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
293f38ad0b
Коммит
e1c0c57d31
@@ -1136,17 +1136,18 @@ func (s SqlChannelStore) GetChannels(teamId string, userId string, opts *model.C
|
||||
func (s SqlChannelStore) GetChannelsByUser(userId string, includeDeleted bool, lastDeleteAt, pageSize int, fromChannelID string) (model.ChannelList, error) {
|
||||
query := s.getQueryBuilder().
|
||||
Select(channelSliceColumns(true, "Channels")...).
|
||||
From("Channels, ChannelMembers").
|
||||
From("Channels, ChannelMembers, Teams").
|
||||
Where(
|
||||
sq.And{
|
||||
sq.Expr("Id = ChannelId"),
|
||||
sq.Eq{"UserId": userId},
|
||||
sq.Expr("Channels.Id = ChannelMembers.ChannelId"),
|
||||
sq.Expr("Channels.TeamId = Teams.Id"),
|
||||
sq.Eq{"ChannelMembers.UserId": userId},
|
||||
},
|
||||
).
|
||||
OrderBy("Id ASC")
|
||||
OrderBy("Channels.Id ASC")
|
||||
|
||||
if fromChannelID != "" {
|
||||
query = query.Where(sq.Gt{"Id": fromChannelID})
|
||||
query = query.Where(sq.Gt{"Channels.Id": fromChannelID})
|
||||
}
|
||||
|
||||
if pageSize != -1 {
|
||||
@@ -1156,15 +1157,24 @@ func (s SqlChannelStore) GetChannelsByUser(userId string, includeDeleted bool, l
|
||||
if includeDeleted {
|
||||
if lastDeleteAt != 0 {
|
||||
// We filter by non-archived, and archived >= a timestamp.
|
||||
query = query.Where(sq.Or{
|
||||
sq.Eq{"DeleteAt": 0},
|
||||
sq.GtOrEq{"DeleteAt": lastDeleteAt},
|
||||
query = query.Where(sq.And{
|
||||
sq.Or{
|
||||
sq.Eq{"Channels.DeleteAt": 0},
|
||||
sq.GtOrEq{"Channels.DeleteAt": lastDeleteAt},
|
||||
},
|
||||
sq.Or{
|
||||
sq.Eq{"Teams.DeleteAt": 0},
|
||||
sq.GtOrEq{"Teams.DeleteAt": lastDeleteAt},
|
||||
},
|
||||
})
|
||||
}
|
||||
// If lastDeleteAt is not set, we include everything. That means no filter is needed.
|
||||
} else {
|
||||
// Don't include archived channels.
|
||||
query = query.Where(sq.Eq{"DeleteAt": 0})
|
||||
// Don't include archived channels or channels from deleted teams
|
||||
query = query.Where(sq.And{
|
||||
sq.Eq{"Channels.DeleteAt": 0},
|
||||
sq.Eq{"Teams.DeleteAt": 0},
|
||||
})
|
||||
}
|
||||
|
||||
sql, args, err := query.ToSql()
|
||||
|
||||
Ссылка в новой задаче
Block a user