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.js45
1 files changed, 19 insertions, 26 deletions
diff --git a/src/routes/index.js b/src/routes/index.js
index 604cabb..f4c0fc9 100644
--- a/src/routes/index.js
+++ b/src/routes/index.js
@@ -112,20 +112,9 @@ router.get("/sub-search", authenticateToken, async (req, res) => {
112 if (!req.query || !req.query.q) { 112 if (!req.query || !req.query.q) {
113 res.render("sub-search", { user: req.user }); 113 res.render("sub-search", { user: req.user });
114 } else { 114 } else {
115 const { q, options } = req.query.q.split(/\s+/).reduce( 115 const { q, options } = parseQuery(req.query.q);
116 (acc, word) => {
117 if (word.startsWith("+")) {
118 acc.options.push(word.slice(1));
119 } else {
120 acc.q += `${word} `;
121 }
122 return acc;
123 },
124 { options: [], q: "" },
125 );
126
127 const { items, after } = await G.searchSubreddits(q, { 116 const { items, after } = await G.searchSubreddits(q, {
128 include_over_18: options.includes("nsfw"), 117 include_over_18: (options.nsfw ?? "no") === "yes",
129 }); 118 });
130 const subs = db 119 const subs = db
131 .query("SELECT subreddit FROM subscriptions WHERE user_id = $id") 120 .query("SELECT subreddit FROM subscriptions WHERE user_id = $id")
@@ -151,20 +140,9 @@ router.get("/post-search", authenticateToken, async (req, res) => {
151 if (!req.query || !req.query.q) { 140 if (!req.query || !req.query.q) {
152 res.render("post-search", { user: req.user }); 141 res.render("post-search", { user: req.user });
153 } else { 142 } else {
154 const { q, options } = req.query.q.split(/\s+/).reduce( 143 const { q, options } = parseQuery(req.query.q);
155 (acc, word) => {
156 if (word.startsWith("+")) {
157 acc.options.push(word.slice(1));
158 } else {
159 acc.q += `${word} `;
160 }
161 return acc;
162 },
163 { options: [], q: "" },
164 );
165
166 const { items, after } = await G.searchSubmissions(q, { 144 const { items, after } = await G.searchSubmissions(q, {
167 include_over_18: options.includes("nsfw"), 145 include_over_18: (options.nsfw ?? "no") === "yes",
168 }); 146 });
169 const message = 147 const message =
170 items.length === 0 148 items.length === 0
@@ -180,6 +158,21 @@ router.get("/post-search", authenticateToken, async (req, res) => {
180 } 158 }
181}); 159});
182 160
161function parseQuery(q) {
162 return q.split(/\s+/).reduce(
163 (acc, word) => {
164 if (word.includes(":")) {
165 const [key, val] = word.split(":");
166 acc.options[key] = val;
167 } else {
168 acc.q += `${word} `;
169 }
170 return acc;
171 },
172 { options: [], q: "" },
173 );
174}
175
183// GET /dashboard 176// GET /dashboard
184router.get("/dashboard", authenticateToken, async (req, res) => { 177router.get("/dashboard", authenticateToken, async (req, res) => {
185 let invites = null; 178 let invites = null;