diff options
Diffstat (limited to 'src/routes/index.js')
-rw-r--r-- | src/routes/index.js | 32 |
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 | ||
107 | router.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 |
107 | router.get("/dashboard", authenticateToken, async (req, res) => { | 139 | router.get("/dashboard", authenticateToken, async (req, res) => { |
108 | let invites = null; | 140 | let invites = null; |