MM-25261: Add 'include_deleted' parameter to get all channels API req… (#14721)
* MM-25261: Add 'include_deleted' parameter to get all channels API request. * MM-25261: Adds test for deleted channels. * MM-25261: Switches to single liner. * MM-25261: Adhere to beta config setting for viewing archived channels. * MM-25261: Test fix. Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
d391fd6231
Коммит
6158e91308
@@ -687,6 +687,7 @@ func getAllChannels(c *Context, w http.ResponseWriter, r *http.Request) {
|
|||||||
opts := model.ChannelSearchOpts{
|
opts := model.ChannelSearchOpts{
|
||||||
NotAssociatedToGroup: c.Params.NotAssociatedToGroup,
|
NotAssociatedToGroup: c.Params.NotAssociatedToGroup,
|
||||||
ExcludeDefaultChannels: c.Params.ExcludeDefaultChannels,
|
ExcludeDefaultChannels: c.Params.ExcludeDefaultChannels,
|
||||||
|
IncludeDeleted: c.Params.IncludeDeleted,
|
||||||
}
|
}
|
||||||
|
|
||||||
channels, err := c.App.GetAllChannels(c.Params.Page, c.Params.PerPage, opts)
|
channels, err := c.App.GetAllChannels(c.Params.Page, c.Params.PerPage, opts)
|
||||||
|
|||||||
@@ -919,6 +919,15 @@ func TestGetAllChannels(t *testing.T) {
|
|||||||
defer th.TearDown()
|
defer th.TearDown()
|
||||||
Client := th.Client
|
Client := th.Client
|
||||||
|
|
||||||
|
var originalConfigVal bool
|
||||||
|
th.App.UpdateConfig(func(cfg *model.Config) {
|
||||||
|
originalConfigVal = *cfg.TeamSettings.ExperimentalViewArchivedChannels
|
||||||
|
*cfg.TeamSettings.ExperimentalViewArchivedChannels = true
|
||||||
|
})
|
||||||
|
defer th.App.UpdateConfig(func(cfg *model.Config) {
|
||||||
|
*cfg.TeamSettings.ExperimentalViewArchivedChannels = originalConfigVal
|
||||||
|
})
|
||||||
|
|
||||||
th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) {
|
th.TestForSystemAdminAndLocal(t, func(t *testing.T, client *model.Client4) {
|
||||||
channels, resp := client.GetAllChannels(0, 20, "")
|
channels, resp := client.GetAllChannels(0, 20, "")
|
||||||
CheckNoError(t, resp)
|
CheckNoError(t, resp)
|
||||||
@@ -940,6 +949,34 @@ func TestGetAllChannels(t *testing.T) {
|
|||||||
channels, resp = client.GetAllChannels(10000, 10000, "")
|
channels, resp = client.GetAllChannels(10000, 10000, "")
|
||||||
CheckNoError(t, resp)
|
CheckNoError(t, resp)
|
||||||
require.Empty(t, *channels)
|
require.Empty(t, *channels)
|
||||||
|
|
||||||
|
channels, resp = client.GetAllChannels(0, 10000, "")
|
||||||
|
require.Nil(t, resp.Error)
|
||||||
|
beforeCount := len(*channels)
|
||||||
|
|
||||||
|
firstChannel := (*channels)[0].Channel
|
||||||
|
|
||||||
|
ok, resp := client.DeleteChannel(firstChannel.Id)
|
||||||
|
require.Nil(t, resp.Error)
|
||||||
|
require.True(t, ok)
|
||||||
|
|
||||||
|
channels, resp = client.GetAllChannels(0, 10000, "")
|
||||||
|
var ids []string
|
||||||
|
for _, item := range *channels {
|
||||||
|
ids = append(ids, item.Channel.Id)
|
||||||
|
}
|
||||||
|
require.Nil(t, resp.Error)
|
||||||
|
require.Len(t, *channels, beforeCount-1)
|
||||||
|
require.NotContains(t, ids, firstChannel.Id)
|
||||||
|
|
||||||
|
channels, resp = client.GetAllChannelsIncludeDeleted(0, 10000, "")
|
||||||
|
ids = []string{}
|
||||||
|
for _, item := range *channels {
|
||||||
|
ids = append(ids, item.Channel.Id)
|
||||||
|
}
|
||||||
|
require.Nil(t, resp.Error)
|
||||||
|
require.True(t, len(*channels) > beforeCount)
|
||||||
|
require.Contains(t, ids, firstChannel.Id)
|
||||||
})
|
})
|
||||||
|
|
||||||
_, resp := Client.GetAllChannels(0, 20, "")
|
_, resp := Client.GetAllChannels(0, 20, "")
|
||||||
|
|||||||
@@ -1570,6 +1570,7 @@ func (a *App) GetChannelsForUser(teamId string, userId string, includeDeleted bo
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) GetAllChannels(page, perPage int, opts model.ChannelSearchOpts) (*model.ChannelListWithTeamData, *model.AppError) {
|
func (a *App) GetAllChannels(page, perPage int, opts model.ChannelSearchOpts) (*model.ChannelListWithTeamData, *model.AppError) {
|
||||||
|
opts.IncludeDeleted = *a.Config().TeamSettings.ExperimentalViewArchivedChannels && opts.IncludeDeleted
|
||||||
if opts.ExcludeDefaultChannels {
|
if opts.ExcludeDefaultChannels {
|
||||||
opts.ExcludeChannelNames = a.DefaultChannelNames()
|
opts.ExcludeChannelNames = a.DefaultChannelNames()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2201,7 +2201,16 @@ func (c *Client4) RemoveTeamIcon(teamId string) (bool, *Response) {
|
|||||||
|
|
||||||
// GetAllChannels get all the channels. Must be a system administrator.
|
// GetAllChannels get all the channels. Must be a system administrator.
|
||||||
func (c *Client4) GetAllChannels(page int, perPage int, etag string) (*ChannelListWithTeamData, *Response) {
|
func (c *Client4) GetAllChannels(page int, perPage int, etag string) (*ChannelListWithTeamData, *Response) {
|
||||||
query := fmt.Sprintf("?page=%v&per_page=%v", page, perPage)
|
return c.getAllChannels(page, perPage, etag, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetAllChannelsIncludeDeleted get all the channels. Must be a system administrator.
|
||||||
|
func (c *Client4) GetAllChannelsIncludeDeleted(page int, perPage int, etag string) (*ChannelListWithTeamData, *Response) {
|
||||||
|
return c.getAllChannels(page, perPage, etag, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Client4) getAllChannels(page int, perPage int, etag string, includeDeleted bool) (*ChannelListWithTeamData, *Response) {
|
||||||
|
query := fmt.Sprintf("?page=%v&per_page=%v&include_deleted=%v", page, perPage, includeDeleted)
|
||||||
r, err := c.DoApiGet(c.GetChannelsRoute()+query, etag)
|
r, err := c.DoApiGet(c.GetChannelsRoute()+query, etag)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, BuildErrorResponse(r, err)
|
return nil, BuildErrorResponse(r, err)
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user