MM-11210 Add "GET /posts/unread" API to support landing on the last unread post (#11486)
* [MM-11210] Add API GET 'api/v4/channels/{channel_id:[A-Za-z0-9]+}/posts/unread' for scrolling overhaul (#9108)
* Add API GET 'api/v4/channels/{channel_id:[A-Za-z0-9]+}/posts/unread'
* add constants
* refactor GetPostSince and added more tests
* move constants to app package
* [MM-11528 && MM-11583] Add userId to in the "posts/unread" path and update test with time delay to fix intermittent failure (#9229)
* add userId to in the "posts/unread" path and update test with time delay to fix intermittent failure
* add limit before and after to query
* remove time delay on test and put pretermined value of Post.CreateAt
* Fix conflict
* [MM-11876] Add cursor to posts list such as next_post_id and previous_post_id (#9707)
* add cursor to posts list such as next_post_id and previous_post_id
add publish previous_post_id on WEBSOCKET_EVENT_POSTED and only get next or previous post IDs if necessary
revert change on adding previous_post_id in WEBSOCKET_EVENT_POSTED
add missing strings import
fix merge conflicts
* update per comment
* update per feedback
* corrected the logic in getting the next and previous post ID
* fix logic to determine next and post IDs, and rename function to have suffix of "Time"
* rearrange logics and add mote tests
* fix merge conflict
* fix missing message when using unread API (#10233)
* MM-15569 Fixes failing test on TestGetPostsForChannelAroundLastUnread (#11039)
* Fix missing posts when getting posts since
* revert changes to GetPostsSince
* migrate Post.GetPostAfterTime and Post.GetPostBeforeTime to sync by default
* revert change to cacheItem
* Fix post ID validation, build query on squirrel and only return post ID as necessary
Этот коммит содержится в:
коммит произвёл
Sudheer
родитель
f56a8f5a99
Коммит
b832985f1d
@@ -18,6 +18,8 @@ const (
|
||||
PER_PAGE_MAXIMUM = 200
|
||||
LOGS_PER_PAGE_DEFAULT = 10000
|
||||
LOGS_PER_PAGE_MAXIMUM = 10000
|
||||
LIMIT_DEFAULT = 60
|
||||
LIMIT_MAXIMUM = 200
|
||||
)
|
||||
|
||||
type Params struct {
|
||||
@@ -68,6 +70,8 @@ type Params struct {
|
||||
IncludeMemberCount bool
|
||||
NotAssociatedToGroup string
|
||||
ExcludeDefaultChannels bool
|
||||
LimitAfter int
|
||||
LimitBefore int
|
||||
GroupIDs string
|
||||
IncludeTotalCount bool
|
||||
}
|
||||
@@ -226,6 +230,22 @@ func ParamsFromRequest(r *http.Request) *Params {
|
||||
params.LogsPerPage = val
|
||||
}
|
||||
|
||||
if val, err := strconv.Atoi(query.Get("limit_after")); err != nil || val < 0 {
|
||||
params.LimitAfter = LIMIT_DEFAULT
|
||||
} else if val > LIMIT_MAXIMUM {
|
||||
params.LimitAfter = LIMIT_MAXIMUM
|
||||
} else {
|
||||
params.LimitAfter = val
|
||||
}
|
||||
|
||||
if val, err := strconv.Atoi(query.Get("limit_before")); err != nil || val < 0 {
|
||||
params.LimitBefore = LIMIT_DEFAULT
|
||||
} else if val > LIMIT_MAXIMUM {
|
||||
params.LimitBefore = LIMIT_MAXIMUM
|
||||
} else {
|
||||
params.LimitBefore = val
|
||||
}
|
||||
|
||||
if val, ok := props["syncable_id"]; ok {
|
||||
params.SyncableId = val
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user