From 32ada7c4e7ad6a701adbea1ba8aff966f2f62c3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Thu, 27 Feb 2020 17:21:36 -0500 Subject: [PATCH] fix: #8188, fix bookmark if sorting is newest_to_oldest --- public/src/client/topic/posts.js | 12 ++++++++++++ src/topics/index.js | 6 ++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/public/src/client/topic/posts.js b/public/src/client/topic/posts.js index 6bcc05ddc2..fd5e0b6437 100644 --- a/public/src/client/topic/posts.js +++ b/public/src/client/topic/posts.js @@ -28,6 +28,8 @@ define('forum/topic/posts', [ updatePostCounts(data.posts); + updatePostIndices(data.posts); + ajaxify.data.postcount += 1; postTools.updatePostCount(ajaxify.data.postcount); @@ -61,6 +63,16 @@ define('forum/topic/posts', [ } } + function updatePostIndices(posts) { + if (config.topicPostSort === 'newest_to_oldest') { + posts[0].index = 1; + components.get('post').not('[data-index=0]').each(function () { + var newIndex = parseInt($(this).attr('data-index'), 10) + 1; + $(this).attr('data-index', newIndex); + }); + } + } + function onNewPostPagination(data) { function scrollToPost() { scrollToPostIfSelf(data.posts[0]); diff --git a/src/topics/index.js b/src/topics/index.js index 57f738b282..11186c454f 100644 --- a/src/topics/index.js +++ b/src/topics/index.js @@ -68,6 +68,7 @@ Topics.getTopicsByTids = async function (tids, options) { const cids = _.uniq(topics.map(t => t && t.cid && t.cid.toString()).filter(v => utils.isNumber(v))); const [ + callerSettings, users, userSettings, categoriesData, @@ -77,6 +78,7 @@ Topics.getTopicsByTids = async function (tids, options) { teasers, tags, ] = await Promise.all([ + user.getSettings(uid), user.getUsersFields(uids, ['uid', 'username', 'fullname', 'userslug', 'reputation', 'postcount', 'picture', 'signature', 'banned', 'status']), user.getMultipleUserSettings(uids), categories.getCategoriesFields(cids, ['cid', 'name', 'slug', 'icon', 'image', 'imageClass', 'bgColor', 'color', 'disabled']), @@ -95,7 +97,7 @@ Topics.getTopicsByTids = async function (tids, options) { const usersMap = _.zipObject(uids, users); const categoriesMap = _.zipObject(cids, categoriesData); - + const sortOldToNew = callerSettings.topicPostSort === 'newest_to_oldest'; for (var i = 0; i < topics.length; i += 1) { if (topics[i]) { topics[i].category = categoriesMap[topics[i].cid]; @@ -106,7 +108,7 @@ Topics.getTopicsByTids = async function (tids, options) { topics[i].isOwner = topics[i].uid === parseInt(uid, 10); topics[i].ignored = isIgnored[i]; topics[i].unread = !hasRead[i] && !isIgnored[i]; - topics[i].bookmark = bookmarks[i]; + topics[i].bookmark = sortOldToNew ? Math.max(1, topics[i].postcount + 2 - bookmarks[i]) : bookmarks[i]; topics[i].unreplied = !topics[i].teaser; topics[i].icons = [];