fix: #9370, show correct teaser index if sorting is newest to oldest

v1.18.x
Barış Soner Uşaklı 4 years ago
parent 1982edfde3
commit 9382fc6dc5

@ -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');
}

Loading…
Cancel
Save