Return empty list of channels when requesting more channels at the end of cursor (#21557)
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
b93a013934
Коммит
79e4959d02
@@ -310,7 +310,7 @@ func TestGraphQLChannels(t *testing.T) {
|
|||||||
|
|
||||||
resp, err = th.MakeGraphQLRequest(&input)
|
resp, err = th.MakeGraphQLRequest(&input)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Len(t, resp.Errors, 1) // no channels found
|
require.Len(t, resp.Errors, 0) // no errors for no channels found
|
||||||
|
|
||||||
th.BasicChannel.Purpose = "newpurpose"
|
th.BasicChannel.Purpose = "newpurpose"
|
||||||
_, _, err = th.Client.UpdateChannel(th.BasicChannel)
|
_, _, err = th.Client.UpdateChannel(th.BasicChannel)
|
||||||
|
|||||||
@@ -1876,15 +1876,8 @@ func (a *App) GetChannelsForTeamForUser(c request.CTX, teamID string, userID str
|
|||||||
func (a *App) GetChannelsForTeamForUserWithCursor(c request.CTX, teamID string, userID string, opts *model.ChannelSearchOpts, afterChannelID string) (model.ChannelList, *model.AppError) {
|
func (a *App) GetChannelsForTeamForUserWithCursor(c request.CTX, teamID string, userID string, opts *model.ChannelSearchOpts, afterChannelID string) (model.ChannelList, *model.AppError) {
|
||||||
list, err := a.Srv().Store().Channel().GetChannelsWithCursor(teamID, userID, opts, afterChannelID)
|
list, err := a.Srv().Store().Channel().GetChannelsWithCursor(teamID, userID, opts, afterChannelID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
var nfErr *store.ErrNotFound
|
return nil, model.NewAppError("GetChannelsForUser", "app.channel.get_channels.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
|
||||||
switch {
|
|
||||||
case errors.As(err, &nfErr):
|
|
||||||
return nil, model.NewAppError("GetChannelsForUser", "app.channel.get_channels.not_found.app_error", nil, "", http.StatusNotFound).Wrap(err)
|
|
||||||
default:
|
|
||||||
return nil, model.NewAppError("GetChannelsForUser", "app.channel.get_channels.get.app_error", nil, "", http.StatusInternalServerError).Wrap(err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return list, nil
|
return list, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1110,10 +1110,6 @@ func (s SqlChannelStore) GetChannelsWithCursor(teamId string, userId string, opt
|
|||||||
return nil, errors.Wrapf(err, "failed to get channels with TeamId=%s and UserId=%s", teamId, userId)
|
return nil, errors.Wrapf(err, "failed to get channels with TeamId=%s and UserId=%s", teamId, userId)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(channels) == 0 {
|
|
||||||
return nil, store.NewErrNotFound("Channel", "userId="+userId)
|
|
||||||
}
|
|
||||||
|
|
||||||
return channels, nil
|
return channels, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3566,6 +3566,22 @@ func testChannelStoreGetChannelsWithCursor(t *testing.T, ss store.Store) {
|
|||||||
require.Len(t, list, 1)
|
require.Len(t, list, 1)
|
||||||
require.Equal(t, teamID, list[0].TeamId, "incorrect teamID")
|
require.Equal(t, teamID, list[0].TeamId, "incorrect teamID")
|
||||||
|
|
||||||
|
// all channels should be returned
|
||||||
|
list, nErr = ss.Channel().GetChannelsWithCursor(o1.TeamId, m1.UserId, &model.ChannelSearchOpts{
|
||||||
|
IncludeDeleted: false,
|
||||||
|
LastDeleteAt: 0,
|
||||||
|
}, "")
|
||||||
|
require.NoError(t, nErr)
|
||||||
|
require.Len(t, list, 3)
|
||||||
|
|
||||||
|
// should return empty list
|
||||||
|
list, nErr = ss.Channel().GetChannelsWithCursor(o1.TeamId, m1.UserId, &model.ChannelSearchOpts{
|
||||||
|
IncludeDeleted: false,
|
||||||
|
LastDeleteAt: 0,
|
||||||
|
}, list[2].Id)
|
||||||
|
require.NoError(t, nErr)
|
||||||
|
require.Len(t, list, 0)
|
||||||
|
|
||||||
// Sleeping to guarantee that the
|
// Sleeping to guarantee that the
|
||||||
// UpdateAt is different.
|
// UpdateAt is different.
|
||||||
// The proper way would be to set UpdateAt during channel creation itself,
|
// The proper way would be to set UpdateAt during channel creation itself,
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user