Skip to content

Commit a3b3460

Browse files
committed
My changes from 1B
1 parent d1da83e commit a3b3460

File tree

1 file changed

+47
-49
lines changed

1 file changed

+47
-49
lines changed

src/controllers/recent.js

Lines changed: 47 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,54 @@
1-
21
'use strict';
32

43
const nconf = require('nconf');
54

6-
const user = require('../user');
7-
const topics = require('../topics');
8-
const meta = require('../meta');
9-
const helpers = require('./helpers');
10-
const pagination = require('../pagination');
11-
const privileges = require('../privileges');
12-
135
const recentController = module.exports;
146
const relative_path = nconf.get('relative_path');
157

8+
// helper to set title & breadcrumbs
9+
function setTitleAndBreadcrumbs(data, url, asHome) {
10+
if (asHome) {
11+
data.title = meta.config.homePageTitle || '[[pages:home]]';
12+
return;
13+
}
14+
data.title = `[[pages:${url}]]`;
15+
data.breadcrumbs = helpers.buildBreadcrumbs([{ text: `[[${url}:title]]` }]);
16+
}
17+
18+
// helper to set RSS fields
19+
function setRssFields(ctx) {
20+
const { data, url, req, rssToken } = ctx;
21+
const disabled = meta.config['feeds:disableRSS'] || 0;
22+
23+
data['feeds:disableRSS'] = disabled;
24+
if (disabled) return;
25+
26+
let rss = `${relative_path}/${url}.rss`;
27+
if (req.loggedIn) {
28+
rss += `?uid=${req.uid}&token=${rssToken}`;
29+
}
30+
data.rssFeedUrl = rss;
31+
}
32+
1633
recentController.get = async function (req, res, next) {
1734
const data = await recentController.getData(req, 'recent', 'recent');
1835
if (!data) {
1936
return next();
2037
}
21-
2238
res.render('recent', data);
2339
};
2440

2541
recentController.getData = async function (req, url, sort) {
2642
const page = parseInt(req.query.page, 10) || 1;
27-
let term = helpers.terms[req.query.term];
43+
44+
// single, simplified term logic
45+
const termKey = req.query.term;
46+
let term = termKey ? helpers.terms[termKey] : 'alltime';
47+
if (termKey && !term) return null;
48+
2849
const { cid, tag } = req.query;
2950
const filter = req.query.filter || '';
3051

31-
if (!term && req.query.term) {
32-
return null;
33-
}
34-
term = term || 'alltime';
35-
3652
const [settings, categoryData, tagData, rssToken, canPost, isPrivileged] = await Promise.all([
3753
user.getSettings(req.uid),
3854
helpers.getSelectedCategory(cid),
@@ -49,27 +65,23 @@ recentController.getData = async function (req, url, sort) {
4965
cids: cid,
5066
tags: tag,
5167
uid: req.uid,
52-
start: start,
53-
stop: stop,
54-
filter: filter,
55-
term: term,
56-
sort: sort,
68+
start,
69+
stop,
70+
filter,
71+
term,
72+
sort,
5773
floatPinned: req.query.pinned,
5874
query: req.query,
5975
});
6076

61-
const isDisplayedAsHome = !(req.originalUrl.startsWith(`${relative_path}/api/${url}`) || req.originalUrl.startsWith(`${relative_path}/${url}`));
62-
const baseUrl = isDisplayedAsHome ? '' : url;
63-
64-
if (isDisplayedAsHome) {
65-
data.title = meta.config.homePageTitle || '[[pages:home]]';
66-
} else {
67-
data.title = `[[pages:${url}]]`;
68-
data.breadcrumbs = helpers.buildBreadcrumbs([{ text: `[[${url}:title]]` }]);
69-
}
77+
// use one computation + helper
78+
const asHome = !(req.originalUrl.startsWith(`${relative_path}/api/${url}`) || req.originalUrl.startsWith(`${relative_path}/${url}`));
79+
const baseUrl = asHome ? '' : url;
80+
setTitleAndBreadcrumbs(data, url, asHome);
7081

7182
const query = { ...req.query };
7283
delete query.page;
84+
7385
data.canPost = canPost;
7486
data.showSelect = isPrivileged;
7587
data.showTopicTools = isPrivileged;
@@ -78,29 +90,15 @@ recentController.getData = async function (req, url, sort) {
7890
data.selectedCids = categoryData.selectedCids;
7991
data.selectedTag = tagData.selectedTag;
8092
data.selectedTags = tagData.selectedTags;
81-
data['feeds:disableRSS'] = meta.config['feeds:disableRSS'] || 0;
82-
if (!meta.config['feeds:disableRSS']) {
83-
data.rssFeedUrl = `${relative_path}/${url}.rss`;
84-
if (req.loggedIn) {
85-
data.rssFeedUrl += `?uid=${req.uid}&token=${rssToken}`;
86-
}
87-
}
93+
94+
// single RSS path via helper
95+
setRssFields({ data, url, req, rssToken });
8896

8997
data.filters = helpers.buildFilters(baseUrl, filter, query);
90-
data.selectedFilter = data.filters.find(filter => filter && filter.selected);
91-
data.terms = helpers.buildTerms(baseUrl, term, query);
92-
data.selectedTerm = data.terms.find(term => term && term.selected);
93-
94-
const pageCount = Math.max(1, Math.ceil(data.topicCount / settings.topicsPerPage));
95-
data.pagination = pagination.create(page, pageCount, req.query);
96-
helpers.addLinkTags({
97-
url: url,
98-
res: req.res,
99-
tags: data.pagination.rel,
100-
page: page,
101-
});
98+
data.selectedFilter = data.filters.find(f => f && f.selected);
99+
102100
return data;
103101
};
104102

105-
106103
require('../promisify')(recentController, ['get']);
104+

0 commit comments

Comments
 (0)