From e3b134223ec87ab4a0471eb4e90c20bf739e404e Mon Sep 17 00:00:00 2001 From: Akshay Date: Fri, 6 Dec 2024 23:23:15 +0000 Subject: allow post search --- src/routes/index.js | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) (limited to 'src/routes/index.js') diff --git a/src/routes/index.js b/src/routes/index.js index 0dafd3e..604cabb 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -102,8 +102,13 @@ router.get("/subs", authenticateToken, async (req, res) => { res.render("subs", { subs, user: req.user }); }); -// GET /search-subreddits +// GET /search router.get("/search", authenticateToken, async (req, res) => { + res.render("search", { user: req.user }); +}); + +// GET /sub-search +router.get("/sub-search", authenticateToken, async (req, res) => { if (!req.query || !req.query.q) { res.render("sub-search", { user: req.user }); } else { @@ -141,6 +146,40 @@ router.get("/search", authenticateToken, async (req, res) => { } }); +// GET /post-search +router.get("/post-search", authenticateToken, async (req, res) => { + if (!req.query || !req.query.q) { + res.render("post-search", { user: req.user }); + } else { + const { q, options } = req.query.q.split(/\s+/).reduce( + (acc, word) => { + if (word.startsWith("+")) { + acc.options.push(word.slice(1)); + } else { + acc.q += `${word} `; + } + return acc; + }, + { options: [], q: "" }, + ); + + const { items, after } = await G.searchSubmissions(q, { + include_over_18: options.includes("nsfw"), + }); + const message = + items.length === 0 + ? "no results found" + : `showing ${items.length} results`; + res.render("post-search", { + items, + after, + message, + user: req.user, + original_query: req.query.q, + }); + } +}); + // GET /dashboard router.get("/dashboard", authenticateToken, async (req, res) => { let invites = null; -- cgit v1.2.3