diff --git a/public/src/modules/navigator.js b/public/src/modules/navigator.js index 88e76e9b7a..824f55434a 100644 --- a/public/src/modules/navigator.js +++ b/public/src/modules/navigator.js @@ -56,7 +56,9 @@ define('navigator', ['forum/pagination', 'components', 'hooks', 'alerts'], funct paginationBlockEl.off('shown.bs.dropdown', '.wrapper').on('shown.bs.dropdown', '.wrapper', function () { setTimeout(async function () { - $('.pagination-block input').focus(); + if (utils.findBootstrapEnvironment() === 'lg') { + $('.pagination-block input').focus(); + } const postCountInTopic = await socket.emit('topics.getPostCountInTopic', ajaxify.data.tid); if (postCountInTopic > 0) { paginationBlockEl.find('#myNextPostBtn').removeAttr('disabled'); @@ -107,10 +109,9 @@ define('navigator', ['forum/pagination', 'components', 'hooks', 'alerts'], funct if (ajaxify.data.template.topic) { let nextIndex = await getNext(index); if (lastNextIndex === nextIndex) { // handles last post in pagination - console.log('fail', nextIndex, lastNextIndex); nextIndex = await getNext(nextIndex); } - if (nextIndex) { + if (nextIndex && index !== nextIndex + 1) { lastNextIndex = nextIndex; $(window).one('action:ajaxify.end', function () { if (paginationBlockEl.find('.dropdown-menu').is(':hidden')) { diff --git a/src/socket.io/topics.js b/src/socket.io/topics.js index c69bb63f3f..4183063b1f 100644 --- a/src/socket.io/topics.js +++ b/src/socket.io/topics.js @@ -88,13 +88,21 @@ SocketTopics.getMyNextPostIndex = async function (socket, data) { cache.set(cacheKey, pids, 30000); return pids; } - + const postCountInTopic = await db.sortedSetScore(`tid:${data.tid}:posters`, socket.uid); + if (postCountInTopic <= 0) { + return 0; + } const [topicPids, userPidsInCategory] = await Promise.all([ getTopicPids(data.index), getUserPids(), ]); const userPidsInTopic = _.intersection(topicPids, userPidsInCategory); if (!userPidsInTopic.length) { + if (postCountInTopic > 0) { + // wrap around to beginning + const wrapIndex = await SocketTopics.getMyNextPostIndex(socket, { ...data, index: 1 }); + return wrapIndex; + } return 0; } return await posts.getPidIndex(userPidsInTopic[0], data.tid, data.sort);