aboutsummaryrefslogtreecommitdiff
path: root/src/routes/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes/index.js')
-rw-r--r--src/routes/index.js32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/routes/index.js b/src/routes/index.js
index e585d3d..c56b73e 100644
--- a/src/routes/index.js
+++ b/src/routes/index.js
@@ -103,6 +103,38 @@ router.get("/subs", authenticateToken, async (req, res) => {
103 res.render("subs", { subs, user: req.user }); 103 res.render("subs", { subs, user: req.user });
104}); 104});
105 105
106// GET /search-subreddits
107router.get("/search", authenticateToken, async (req, res) => {
108 if (!req.query || !req.query.q) {
109 res.render("sub-search", {});
110 } else {
111 const { q, options } = req.query.q.split(/\s+/).reduce(
112 (acc, word) => {
113 if (word.startsWith("+")) {
114 acc.options.push(word.slice(1));
115 } else {
116 acc.q += `${word} `;
117 }
118 return acc;
119 },
120 { options: [], q: "" },
121 );
122
123 const { items, after } = await G.searchSubreddits(q, {
124 include_over_18: options.includes("nsfw"),
125 });
126 const subs = db
127 .query("SELECT subreddit FROM subscriptions WHERE user_id = $id")
128 .all({ id: req.user.id })
129 .map((res) => res.subreddit);
130 const message =
131 items.length === 0
132 ? "no results found"
133 : `showing ${items.length} results`;
134 res.render("sub-search", { items, subs, after, message });
135 }
136});
137
106// GET /dashboard 138// GET /dashboard
107router.get("/dashboard", authenticateToken, async (req, res) => { 139router.get("/dashboard", authenticateToken, async (req, res) => {
108 let invites = null; 140 let invites = null;