optionally exclude threads in direct messages (#29042)

* optionally exclude threads in direct messages

* add excludeDirect option in client4

* Skip flaky test

* refactor double negate

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
Elias Nahum
2024-11-14 16:57:15 +08:00
коммит произвёл GitHub
родитель 38e2f67583
Коммит 701d1dbd68
6 изменённых файлов: 69 добавлений и 24 удалений

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

@@ -134,11 +134,16 @@ func (s *SqlThreadStore) getTotalThreadsQuery(userId, teamId string, opts model.
})
if teamId != "" {
query = query.
Where(sq.Or{
sq.Eq{"Threads.ThreadTeamId": teamId},
sq.Eq{"Threads.ThreadTeamId": ""},
})
if opts.ExcludeDirect {
query = query.Where(sq.Eq{"Threads.ThreadTeamId": teamId})
} else {
query = query.Where(
sq.Or{
sq.Eq{"Threads.ThreadTeamId": teamId},
sq.Eq{"Threads.ThreadTeamId": ""},
},
)
}
}
if !opts.Deleted {
@@ -196,11 +201,16 @@ func (s *SqlThreadStore) GetTotalUnreadMentions(userId, teamId string, opts mode
})
if teamId != "" {
query = query.
Where(sq.Or{
sq.Eq{"Threads.ThreadTeamId": teamId},
sq.Eq{"Threads.ThreadTeamId": ""},
})
if opts.ExcludeDirect {
query = query.Where(sq.Eq{"Threads.ThreadTeamId": teamId})
} else {
query = query.Where(
sq.Or{
sq.Eq{"Threads.ThreadTeamId": teamId},
sq.Eq{"Threads.ThreadTeamId": ""},
},
)
}
}
if !opts.Deleted {
@@ -235,11 +245,16 @@ func (s *SqlThreadStore) GetTotalUnreadUrgentMentions(userId, teamId string, opt
}
if teamId != "" {
query = query.
Where(sq.Or{
sq.Eq{"Threads.ThreadTeamId": teamId},
sq.Eq{"Threads.ThreadTeamId": ""},
})
if opts.ExcludeDirect {
query = query.Where(sq.Eq{"Threads.ThreadTeamId": teamId})
} else {
query = query.Where(
sq.Or{
sq.Eq{"Threads.ThreadTeamId": teamId},
sq.Eq{"Threads.ThreadTeamId": ""},
},
)
}
}
if !opts.Deleted {
@@ -296,14 +311,19 @@ func (s *SqlThreadStore) GetThreadsForUser(userId, teamId string, opts model.Get
LeftJoin("PostsPriority ON PostsPriority.PostId = Threads.PostId")
}
// If a team is specified, constrain to channels in that team or DMs/GMs without
// If a team is specified, constrain to channels in that team and if not excluded also return DMs/GMs without
// a team at all.
if teamId != "" {
query = query.
Where(sq.Or{
sq.Eq{"Threads.ThreadTeamId": teamId},
sq.Eq{"Threads.ThreadTeamId": ""},
})
if opts.ExcludeDirect {
query = query.Where(sq.Eq{"Threads.ThreadTeamId": teamId})
} else {
query = query.Where(
sq.Or{
sq.Eq{"Threads.ThreadTeamId": teamId},
sq.Eq{"Threads.ThreadTeamId": ""},
},
)
}
}
if !opts.Deleted {