mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-10-26 08:36:12 +01:00
fix: #9370, show correct teaser index if sorting is newest to oldest
This commit is contained in:
@@ -43,12 +43,15 @@ module.exports = function (Topics) {
|
||||
}
|
||||
});
|
||||
|
||||
let postData = await posts.getPostsFields(teaserPids, ['pid', 'uid', 'timestamp', 'tid', 'content']);
|
||||
postData = postData.filter(post => post && post.pid);
|
||||
const [allPostData, callerSettings] = await Promise.all([
|
||||
posts.getPostsFields(teaserPids, ['pid', 'uid', 'timestamp', 'tid', 'content']),
|
||||
user.getSettings(uid),
|
||||
]);
|
||||
let postData = allPostData.filter(post => post && post.pid);
|
||||
postData = await handleBlocks(uid, postData);
|
||||
postData = postData.filter(Boolean);
|
||||
const uids = _.uniq(postData.map(post => post.uid));
|
||||
|
||||
const sortNewToOld = callerSettings.topicPostSort === 'newest_to_oldest';
|
||||
const usersData = await user.getUsersFields(uids, ['uid', 'username', 'userslug', 'picture']);
|
||||
|
||||
const users = {};
|
||||
@@ -75,7 +78,7 @@ module.exports = function (Topics) {
|
||||
return null;
|
||||
}
|
||||
if (tidToPost[topic.tid]) {
|
||||
tidToPost[topic.tid].index = meta.config.teaserPost === 'first' ? 1 : counts[index];
|
||||
tidToPost[topic.tid].index = calcTeaserIndex(teaserPost, counts[index], sortNewToOld);
|
||||
if (tidToPost[topic.tid].content) {
|
||||
tidToPost[topic.tid].content = utils.stripHTMLTags(replaceImgWithAltText(tidToPost[topic.tid].content), tags);
|
||||
}
|
||||
@@ -87,6 +90,17 @@ module.exports = function (Topics) {
|
||||
return result.teasers;
|
||||
};
|
||||
|
||||
function calcTeaserIndex(teaserPost, postCountInTopic, sortNewToOld) {
|
||||
if (teaserPost === 'first') {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (sortNewToOld) {
|
||||
return Math.min(2, postCountInTopic);
|
||||
}
|
||||
return postCountInTopic;
|
||||
}
|
||||
|
||||
function replaceImgWithAltText(str) {
|
||||
return String(str).replace(/<img .*?alt="(.*?)"[^>]*>/gi, '$1');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user