diff options
-rw-r--r-- | flake.nix | 4 | ||||
-rw-r--r-- | src/geddit.js | 153 | ||||
-rw-r--r-- | src/index.js | 2 | ||||
-rw-r--r-- | src/mixins/comment.pug | 3 | ||||
-rw-r--r-- | src/public/styles.css | 4 | ||||
-rw-r--r-- | src/routes/index.js | 31 | ||||
-rw-r--r-- | src/views/media.pug | 4 |
7 files changed, 74 insertions, 127 deletions
@@ -12,7 +12,9 @@ | |||
12 | nixpkgsFor = forAllSystems (system: | 12 | nixpkgsFor = forAllSystems (system: |
13 | import nixpkgs { | 13 | import nixpkgs { |
14 | inherit system; | 14 | inherit system; |
15 | overlays = [self.overlays.default]; | 15 | overlays = [ |
16 | self.overlays.default | ||
17 | ]; | ||
16 | }); | 18 | }); |
17 | in { | 19 | in { |
18 | overlays.default = final: prev: { | 20 | overlays.default = final: prev: { |
diff --git a/src/geddit.js b/src/geddit.js index d7e54e2..3b090c6 100644 --- a/src/geddit.js +++ b/src/geddit.js | |||
@@ -12,20 +12,18 @@ class Geddit { | |||
12 | }; | 12 | }; |
13 | } | 13 | } |
14 | 14 | ||
15 | async getSubmissions(sort = null, subreddit = null, options = {}) { | 15 | async getSubmissions(sort = "hot", subreddit = null, options = {}) { |
16 | const params = { | 16 | const params = { |
17 | limit: 20, | 17 | limit: 20, |
18 | include_over_18: true, | 18 | include_over_18: true, |
19 | }; | 19 | }; |
20 | 20 | ||
21 | sort = sort ? sort : "hot"; | 21 | subreddit = subreddit ? `/r/${subreddit}` : ""; |
22 | subreddit = subreddit ? "/r/" + subreddit : ""; | ||
23 | 22 | ||
24 | return await fetch( | 23 | return await fetch( |
25 | this.host + | 24 | `${ |
26 | subreddit + | 25 | this.host + subreddit |
27 | `/${sort}.json?` + | 26 | }/${sort}.json?${new URLSearchParams(Object.assign(params, options))}`, |
28 | new URLSearchParams(Object.assign(params, options)), | ||
29 | ) | 27 | ) |
30 | .then((res) => res.json()) | 28 | .then((res) => res.json()) |
31 | .then((json) => json.data) | 29 | .then((json) => json.data) |
@@ -38,11 +36,7 @@ class Geddit { | |||
38 | 36 | ||
39 | async getDomainHot(domain, options = this.parameters) { | 37 | async getDomainHot(domain, options = this.parameters) { |
40 | return await fetch( | 38 | return await fetch( |
41 | this.host + | 39 | `${this.host}/domain/${domain}/hot.json?${new URLSearchParams(options)}`, |
42 | "/domain/" + | ||
43 | domain + | ||
44 | "/hot.json?" + | ||
45 | new URLSearchParams(options), | ||
46 | ) | 40 | ) |
47 | .then((res) => res.json()) | 41 | .then((res) => res.json()) |
48 | .then((json) => json.data) | 42 | .then((json) => json.data) |
@@ -55,11 +49,7 @@ class Geddit { | |||
55 | 49 | ||
56 | async getDomainBest(domain, options = this.parameters) { | 50 | async getDomainBest(domain, options = this.parameters) { |
57 | return await fetch( | 51 | return await fetch( |
58 | this.host + | 52 | `${this.host}/domain/${domain}/best.json?${new URLSearchParams(options)}`, |
59 | "/domain/" + | ||
60 | domain + | ||
61 | "/best.json?" + | ||
62 | new URLSearchParams(options), | ||
63 | ) | 53 | ) |
64 | .then((res) => res.json()) | 54 | .then((res) => res.json()) |
65 | .then((json) => json.data) | 55 | .then((json) => json.data) |
@@ -72,11 +62,7 @@ class Geddit { | |||
72 | 62 | ||
73 | async getDomainTop(domain, options = this.parameters) { | 63 | async getDomainTop(domain, options = this.parameters) { |
74 | return await fetch( | 64 | return await fetch( |
75 | this.host + | 65 | `${this.host}/domain/${domain}/top.json?${new URLSearchParams(options)}`, |
76 | "/domain/" + | ||
77 | domain + | ||
78 | "/top.json?" + | ||
79 | new URLSearchParams(options), | ||
80 | ) | 66 | ) |
81 | .then((res) => res.json()) | 67 | .then((res) => res.json()) |
82 | .then((json) => json.data) | 68 | .then((json) => json.data) |
@@ -89,11 +75,7 @@ class Geddit { | |||
89 | 75 | ||
90 | async getDomainNew(domain, options = this.parameters) { | 76 | async getDomainNew(domain, options = this.parameters) { |
91 | return await fetch( | 77 | return await fetch( |
92 | this.host + | 78 | `${this.host}/domain/${domain}/new.json?${new URLSearchParams(options)}`, |
93 | "/domain/" + | ||
94 | domain + | ||
95 | "/new.json?" + | ||
96 | new URLSearchParams(options), | ||
97 | ) | 79 | ) |
98 | .then((res) => res.json()) | 80 | .then((res) => res.json()) |
99 | .then((json) => json.data) | 81 | .then((json) => json.data) |
@@ -106,11 +88,7 @@ class Geddit { | |||
106 | 88 | ||
107 | async getDomainRising(domain, options = this.parameters) { | 89 | async getDomainRising(domain, options = this.parameters) { |
108 | return await fetch( | 90 | return await fetch( |
109 | this.host + | 91 | `${this.host}/domain/${domain}/rising.json?${new URLSearchParams(options)}`, |
110 | "/domain/" + | ||
111 | domain + | ||
112 | "/rising.json?" + | ||
113 | new URLSearchParams(options), | ||
114 | ) | 92 | ) |
115 | .then((res) => res.json()) | 93 | .then((res) => res.json()) |
116 | .then((json) => json.data) | 94 | .then((json) => json.data) |
@@ -123,11 +101,7 @@ class Geddit { | |||
123 | 101 | ||
124 | async getDomainControversial(domain, options = this.parameters) { | 102 | async getDomainControversial(domain, options = this.parameters) { |
125 | return await fetch( | 103 | return await fetch( |
126 | this.host + | 104 | `${this.host}/domain/${domain}/controversial.json?${new URLSearchParams(options)}`, |
127 | "/domain/" + | ||
128 | domain + | ||
129 | "/controversial.json?" + | ||
130 | new URLSearchParams(options), | ||
131 | ) | 105 | ) |
132 | .then((res) => res.json()) | 106 | .then((res) => res.json()) |
133 | .then((json) => json.data) | 107 | .then((json) => json.data) |
@@ -139,51 +113,47 @@ class Geddit { | |||
139 | } | 113 | } |
140 | 114 | ||
141 | async getSubreddit(subreddit) { | 115 | async getSubreddit(subreddit) { |
142 | return await fetch(this.host + "/r/" + subreddit + "/about.json") | 116 | return await fetch(`${this.host}/r/${subreddit}/about.json`) |
143 | .then((res) => res.json()) | 117 | .then((res) => res.json()) |
144 | .then((json) => json.data) | 118 | .then((json) => json.data) |
145 | .catch((err) => null); | 119 | .catch((err) => null); |
146 | } | 120 | } |
147 | 121 | ||
148 | async getSubredditRules(subreddit) { | 122 | async getSubredditRules(subreddit) { |
149 | return await fetch(this.host + "/r/" + subreddit + "/about/rules.json") | 123 | return await fetch(`${this.host}/r/${subreddit}/about/rules.json`) |
150 | .then((res) => res.json()) | 124 | .then((res) => res.json()) |
151 | .then((json) => json.data) | 125 | .then((json) => json.data) |
152 | .catch((err) => null); | 126 | .catch((err) => null); |
153 | } | 127 | } |
154 | 128 | ||
155 | async getSubredditModerators(subreddit) { | 129 | async getSubredditModerators(subreddit) { |
156 | return await fetch(this.host + "/r/" + subreddit + "/about/moderators.json") | 130 | return await fetch(`${this.host}/r/${subreddit}/about/moderators.json`) |
157 | .then((res) => res.json()) | 131 | .then((res) => res.json()) |
158 | .then((json) => json.data) | 132 | .then((json) => json.data) |
159 | .then( | 133 | .then({ |
160 | (data = { | 134 | data: { |
161 | users: data.children, | 135 | users: data.children, |
162 | }), | 136 | }, |
163 | ) | 137 | }) |
164 | .catch((err) => null); | 138 | .catch((err) => null); |
165 | } | 139 | } |
166 | 140 | ||
167 | async getSubredditWikiPages(subreddit) { | 141 | async getSubredditWikiPages(subreddit) { |
168 | return await fetch(this.host + "/r/" + subreddit + "/wiki/pages.json") | 142 | return await fetch(`${this.host}/r/${subreddit}/wiki/pages.json`) |
169 | .then((res) => res.json()) | 143 | .then((res) => res.json()) |
170 | .then((json) => json.data) | 144 | .then((json) => json.data) |
171 | .catch((err) => null); | 145 | .catch((err) => null); |
172 | } | 146 | } |
173 | 147 | ||
174 | async getSubredditWikiPage(subreddit, page) { | 148 | async getSubredditWikiPage(subreddit, page) { |
175 | return await fetch( | 149 | return await fetch(`${this.host}/r/${subreddit}/wiki/${page}.json`) |
176 | this.host + "/r/" + subreddit + "/wiki/" + page + ".json", | ||
177 | ) | ||
178 | .then((res) => res.json()) | 150 | .then((res) => res.json()) |
179 | .then((json) => json.data) | 151 | .then((json) => json.data) |
180 | .catch((err) => null); | 152 | .catch((err) => null); |
181 | } | 153 | } |
182 | 154 | ||
183 | async getSubredditWikiPageRevisions(subreddit, page) { | 155 | async getSubredditWikiPageRevisions(subreddit, page) { |
184 | return await fetch( | 156 | return await fetch(`${this.host}/r/${subreddit}/wiki/revisions${page}.json`) |
185 | this.host + "/r/" + subreddit + "/wiki/revisions" + page + ".json", | ||
186 | ) | ||
187 | .then((res) => res.json()) | 157 | .then((res) => res.json()) |
188 | .then((json) => json.data.children) | 158 | .then((json) => json.data.children) |
189 | .catch((err) => null); | 159 | .catch((err) => null); |
@@ -191,7 +161,7 @@ class Geddit { | |||
191 | 161 | ||
192 | async getPopularSubreddits(options = this.parameters) { | 162 | async getPopularSubreddits(options = this.parameters) { |
193 | return await fetch( | 163 | return await fetch( |
194 | this.host + "/subreddits/popular.json?" + new URLSearchParams(options), | 164 | `${this.host}/subreddits/popular.json?${new URLSearchParams(options)}`, |
195 | ) | 165 | ) |
196 | .then((res) => res.json()) | 166 | .then((res) => res.json()) |
197 | .then((json) => json.data) | 167 | .then((json) => json.data) |
@@ -204,7 +174,7 @@ class Geddit { | |||
204 | 174 | ||
205 | async getNewSubreddits(options = this.parameters) { | 175 | async getNewSubreddits(options = this.parameters) { |
206 | return await fetch( | 176 | return await fetch( |
207 | this.host + "/subreddits/new.json?" + new URLSearchParams(options), | 177 | `${this.host}/subreddits/new.json?${new URLSearchParams(options)}`, |
208 | ) | 178 | ) |
209 | .then((res) => res.json()) | 179 | .then((res) => res.json()) |
210 | .then((json) => json.data) | 180 | .then((json) => json.data) |
@@ -217,7 +187,7 @@ class Geddit { | |||
217 | 187 | ||
218 | async getPremiumSubreddits(options = this.parameters) { | 188 | async getPremiumSubreddits(options = this.parameters) { |
219 | return await fetch( | 189 | return await fetch( |
220 | this.host + "/subreddits/premium.json?" + new URLSearchParams(options), | 190 | `${this.host}/subreddits/premium.json?${new URLSearchParams(options)}`, |
221 | ) | 191 | ) |
222 | .then((res) => res.json()) | 192 | .then((res) => res.json()) |
223 | .then((json) => json.data) | 193 | .then((json) => json.data) |
@@ -230,7 +200,7 @@ class Geddit { | |||
230 | 200 | ||
231 | async getDefaultSubreddits(options = this.parameters) { | 201 | async getDefaultSubreddits(options = this.parameters) { |
232 | return await fetch( | 202 | return await fetch( |
233 | this.host + "/subreddits/default.json?" + new URLSearchParams(options), | 203 | `${this.host}/subreddits/default.json?${new URLSearchParams(options)}`, |
234 | ) | 204 | ) |
235 | .then((res) => res.json()) | 205 | .then((res) => res.json()) |
236 | .then((json) => json.data) | 206 | .then((json) => json.data) |
@@ -243,7 +213,7 @@ class Geddit { | |||
243 | 213 | ||
244 | async getPopularUsers(options = this.parameters) { | 214 | async getPopularUsers(options = this.parameters) { |
245 | return await fetch( | 215 | return await fetch( |
246 | this.host + "/users/popular.json?" + new URLSearchParams(options), | 216 | `${this.host}/users/popular.json?${new URLSearchParams(options)}`, |
247 | ) | 217 | ) |
248 | .then((res) => res.json()) | 218 | .then((res) => res.json()) |
249 | .then((json) => json.data) | 219 | .then((json) => json.data) |
@@ -256,7 +226,7 @@ class Geddit { | |||
256 | 226 | ||
257 | async getNewUsers(options = this.parameters) { | 227 | async getNewUsers(options = this.parameters) { |
258 | return await fetch( | 228 | return await fetch( |
259 | this.host + "/users/new.json?" + new URLSearchParams(options), | 229 | `${this.host}/users/new.json?${new URLSearchParams(options)}`, |
260 | ) | 230 | ) |
261 | .then((res) => res.json()) | 231 | .then((res) => res.json()) |
262 | .then((json) => json.data) | 232 | .then((json) => json.data) |
@@ -277,9 +247,7 @@ class Geddit { | |||
277 | }; | 247 | }; |
278 | 248 | ||
279 | return await fetch( | 249 | return await fetch( |
280 | this.host + | 250 | `${this.host}/search.json?${new URLSearchParams(Object.assign(params, options))}`, |
281 | "/search.json?" + | ||
282 | new URLSearchParams(Object.assign(params, options)), | ||
283 | ) | 251 | ) |
284 | .then((res) => res.json()) | 252 | .then((res) => res.json()) |
285 | .then((json) => json.data) | 253 | .then((json) => json.data) |
@@ -299,9 +267,7 @@ class Geddit { | |||
299 | }; | 267 | }; |
300 | 268 | ||
301 | return await fetch( | 269 | return await fetch( |
302 | this.host + | 270 | `${this.host}/subreddits/search.json?${new URLSearchParams(Object.assign(params, options))}`, |
303 | "/subreddits/search.json?" + | ||
304 | new URLSearchParams(Object.assign(params, options)), | ||
305 | ) | 271 | ) |
306 | .then((res) => res.json()) | 272 | .then((res) => res.json()) |
307 | .then((json) => json.data) | 273 | .then((json) => json.data) |
@@ -321,9 +287,7 @@ class Geddit { | |||
321 | }; | 287 | }; |
322 | 288 | ||
323 | return await fetch( | 289 | return await fetch( |
324 | this.host + | 290 | `${this.host}/users/search.json?${new URLSearchParams(Object.assign(params, options))}`, |
325 | "/users/search.json?" + | ||
326 | new URLSearchParams(Object.assign(params, options)), | ||
327 | ) | 291 | ) |
328 | .then((res) => res.json()) | 292 | .then((res) => res.json()) |
329 | .then((json) => json.data) | 293 | .then((json) => json.data) |
@@ -336,7 +300,7 @@ class Geddit { | |||
336 | 300 | ||
337 | async searchAll(query, subreddit = null, options = {}) { | 301 | async searchAll(query, subreddit = null, options = {}) { |
338 | options.q = query; | 302 | options.q = query; |
339 | subreddit = subreddit ? "/r/" + subreddit : ""; | 303 | subreddit = subreddit ? `/r/${subreddit}` : ""; |
340 | 304 | ||
341 | const params = { | 305 | const params = { |
342 | limit: 25, | 306 | limit: 25, |
@@ -345,10 +309,9 @@ class Geddit { | |||
345 | }; | 309 | }; |
346 | 310 | ||
347 | return await fetch( | 311 | return await fetch( |
348 | this.host + | 312 | `${ |
349 | subreddit + | 313 | this.host + subreddit |
350 | "/search.json?" + | 314 | }/search.json?${new URLSearchParams(Object.assign(params, options))}`, |
351 | new URLSearchParams(Object.assign(params, options)), | ||
352 | ) | 315 | ) |
353 | .then((res) => res.json()) | 316 | .then((res) => res.json()) |
354 | .then((json) => | 317 | .then((json) => |
@@ -366,7 +329,7 @@ class Geddit { | |||
366 | } | 329 | } |
367 | 330 | ||
368 | async getSubmission(id) { | 331 | async getSubmission(id) { |
369 | return await fetch(this.host + "/by_id/" + id + ".json") | 332 | return await fetch(`${this.host}/by_id/${id}.json`) |
370 | .then((res) => res.json()) | 333 | .then((res) => res.json()) |
371 | .then((json) => json.data.children[0].data) | 334 | .then((json) => json.data.children[0].data) |
372 | .catch((err) => null); | 335 | .catch((err) => null); |
@@ -374,7 +337,7 @@ class Geddit { | |||
374 | 337 | ||
375 | async getSubmissionComments(id, options = this.parameters) { | 338 | async getSubmissionComments(id, options = this.parameters) { |
376 | return await fetch( | 339 | return await fetch( |
377 | this.host + "/comments/" + id + ".json?" + new URLSearchParams(options), | 340 | `${this.host}/comments/${id}.json?${new URLSearchParams(options)}`, |
378 | ) | 341 | ) |
379 | .then((res) => res.json()) | 342 | .then((res) => res.json()) |
380 | .then((json) => ({ | 343 | .then((json) => ({ |
@@ -386,11 +349,7 @@ class Geddit { | |||
386 | 349 | ||
387 | async getSubredditComments(subreddit, options = this.parameters) { | 350 | async getSubredditComments(subreddit, options = this.parameters) { |
388 | return await fetch( | 351 | return await fetch( |
389 | this.host + | 352 | `${this.host}/r/${subreddit}/comments.json?${new URLSearchParams(options)}`, |
390 | "/r/" + | ||
391 | subreddit + | ||
392 | "/comments.json?" + | ||
393 | new URLSearchParams(options), | ||
394 | ) | 353 | ) |
395 | .then((res) => res.json()) | 354 | .then((res) => res.json()) |
396 | .then((json) => json.data.children) | 355 | .then((json) => json.data.children) |
@@ -398,7 +357,7 @@ class Geddit { | |||
398 | } | 357 | } |
399 | 358 | ||
400 | async getUser(username) { | 359 | async getUser(username) { |
401 | return await fetch(this.host + "/user/" + username + "/about.json") | 360 | return await fetch(`${this.host}/user/${username}/about.json`) |
402 | .then((res) => res.json()) | 361 | .then((res) => res.json()) |
403 | .then((json) => json.data) | 362 | .then((json) => json.data) |
404 | .catch((err) => null); | 363 | .catch((err) => null); |
@@ -406,11 +365,7 @@ class Geddit { | |||
406 | 365 | ||
407 | async getUserOverview(username, options = this.parameters) { | 366 | async getUserOverview(username, options = this.parameters) { |
408 | return await fetch( | 367 | return await fetch( |
409 | this.host + | 368 | `${this.host}/user/${username}/overview.json?${new URLSearchParams(options)}`, |
410 | "/user/" + | ||
411 | username + | ||
412 | "/overview.json?" + | ||
413 | new URLSearchParams(options), | ||
414 | ) | 369 | ) |
415 | .then((res) => res.json()) | 370 | .then((res) => res.json()) |
416 | .then((json) => json.data) | 371 | .then((json) => json.data) |
@@ -423,11 +378,7 @@ class Geddit { | |||
423 | 378 | ||
424 | async getUserComments(username, options = this.parameters) { | 379 | async getUserComments(username, options = this.parameters) { |
425 | return await fetch( | 380 | return await fetch( |
426 | this.host + | 381 | `${this.host}/user/${username}/comments.json?${new URLSearchParams(options)}`, |
427 | "/user/" + | ||
428 | username + | ||
429 | "/comments.json?" + | ||
430 | new URLSearchParams(options), | ||
431 | ) | 382 | ) |
432 | .then((res) => res.json()) | 383 | .then((res) => res.json()) |
433 | .then((json) => json.data) | 384 | .then((json) => json.data) |
@@ -440,11 +391,7 @@ class Geddit { | |||
440 | 391 | ||
441 | async getUserSubmissions(username, options = this.parameters) { | 392 | async getUserSubmissions(username, options = this.parameters) { |
442 | return await fetch( | 393 | return await fetch( |
443 | this.host + | 394 | `${this.host}/user/${username}/submitted.json?${new URLSearchParams(options)}`, |
444 | "/user/" + | ||
445 | username + | ||
446 | "/submitted.json?" + | ||
447 | new URLSearchParams(options), | ||
448 | ) | 395 | ) |
449 | .then((res) => res.json()) | 396 | .then((res) => res.json()) |
450 | .then((json) => json.data) | 397 | .then((json) => json.data) |
@@ -456,7 +403,7 @@ class Geddit { | |||
456 | } | 403 | } |
457 | 404 | ||
458 | async getLiveThread(id) { | 405 | async getLiveThread(id) { |
459 | return await fetch(this.host + "/live/" + id + "/about.json") | 406 | return await fetch(`${this.host}/live/${id}/about.json`) |
460 | .then((res) => res.json()) | 407 | .then((res) => res.json()) |
461 | .then((json) => json.data) | 408 | .then((json) => json.data) |
462 | .catch((err) => null); | 409 | .catch((err) => null); |
@@ -464,7 +411,7 @@ class Geddit { | |||
464 | 411 | ||
465 | async getLiveThreadUpdates(id, options = this.parameters) { | 412 | async getLiveThreadUpdates(id, options = this.parameters) { |
466 | return await fetch( | 413 | return await fetch( |
467 | this.host + "/live/" + id + ".json?" + new URLSearchParams(options), | 414 | `${this.host}/live/${id}.json?${new URLSearchParams(options)}`, |
468 | ) | 415 | ) |
469 | .then((res) => res.json()) | 416 | .then((res) => res.json()) |
470 | .then((json) => json.data.children) | 417 | .then((json) => json.data.children) |
@@ -473,11 +420,7 @@ class Geddit { | |||
473 | 420 | ||
474 | async getLiveThreadContributors(id, options = this.parameters) { | 421 | async getLiveThreadContributors(id, options = this.parameters) { |
475 | return await fetch( | 422 | return await fetch( |
476 | this.host + | 423 | `${this.host}/live/${id}/contributors.json?${new URLSearchParams(options)}`, |
477 | "/live/" + | ||
478 | id + | ||
479 | "/contributors.json?" + | ||
480 | new URLSearchParams(options), | ||
481 | ) | 424 | ) |
482 | .then((res) => res.json()) | 425 | .then((res) => res.json()) |
483 | .then((json) => json.data.children) | 426 | .then((json) => json.data.children) |
@@ -486,11 +429,7 @@ class Geddit { | |||
486 | 429 | ||
487 | async getLiveThreadDiscussions(id, options = this.parameters) { | 430 | async getLiveThreadDiscussions(id, options = this.parameters) { |
488 | return await fetch( | 431 | return await fetch( |
489 | this.host + | 432 | `${this.host}/live/${id}/discussions.json?${new URLSearchParams(options)}`, |
490 | "/live/" + | ||
491 | id + | ||
492 | "/discussions.json?" + | ||
493 | new URLSearchParams(options), | ||
494 | ) | 433 | ) |
495 | .then((res) => res.json()) | 434 | .then((res) => res.json()) |
496 | .then((json) => json.data.children) | 435 | .then((json) => json.data.children) |
@@ -499,7 +438,7 @@ class Geddit { | |||
499 | 438 | ||
500 | async getLiveThreadsNow(options = this.parameters) { | 439 | async getLiveThreadsNow(options = this.parameters) { |
501 | return await fetch( | 440 | return await fetch( |
502 | this.host + "/live/happening_now.json?" + new URLSearchParams(options), | 441 | `${this.host}/live/happening_now.json?${new URLSearchParams(options)}`, |
503 | ) | 442 | ) |
504 | .then((res) => res.json()) | 443 | .then((res) => res.json()) |
505 | .then((json) => json.data.children) | 444 | .then((json) => json.data.children) |
diff --git a/src/index.js b/src/index.js index 164ad49..cf55183 100644 --- a/src/index.js +++ b/src/index.js | |||
@@ -1,5 +1,5 @@ | |||
1 | const express = require("express"); | 1 | const express = require("express"); |
2 | const path = require("path"); | 2 | const path = require("node:path"); |
3 | const routes = require("./routes/index"); | 3 | const routes = require("./routes/index"); |
4 | const geddit = require("./geddit.js"); | 4 | const geddit = require("./geddit.js"); |
5 | 5 | ||
diff --git a/src/mixins/comment.pug b/src/mixins/comment.pug index d02c221..99231d8 100644 --- a/src/mixins/comment.pug +++ b/src/mixins/comment.pug | |||
@@ -19,9 +19,8 @@ mixin infoContainer(data) | |||
19 | 19 | ||
20 | mixin comment(com, isfirst) | 20 | mixin comment(com, isfirst) |
21 | - var data = com.data | 21 | - var data = com.data |
22 | - console.log(com) | ||
23 | - var hasReplyData = hasReplies(data) | 22 | - var hasReplyData = hasReplies(data) |
24 | 23 | ||
25 | if com.kind == "more" | 24 | if com.kind == "more" |
26 | div(class=`more ${isfirst ? 'first' : ''}`) | 25 | div(class=`more ${isfirst ? 'first' : ''}`) |
27 | | #{data.count} more #{fmttxt(data.count, 'comment')} | 26 | | #{data.count} more #{fmttxt(data.count, 'comment')} |
diff --git a/src/public/styles.css b/src/public/styles.css index afd89e2..70a6518 100644 --- a/src/public/styles.css +++ b/src/public/styles.css | |||
@@ -381,6 +381,10 @@ summary { | |||
381 | cursor: pointer; | 381 | cursor: pointer; |
382 | } | 382 | } |
383 | 383 | ||
384 | summary::-webkit-details-marker { | ||
385 | display: none; | ||
386 | } | ||
387 | |||
384 | details[open] summary::before { | 388 | details[open] summary::before { |
385 | content: ""; | 389 | content: ""; |
386 | padding-right: 10px; | 390 | padding-right: 10px; |
diff --git a/src/routes/index.js b/src/routes/index.js index 01c17fa..f60fd96 100644 --- a/src/routes/index.js +++ b/src/routes/index.js | |||
@@ -11,25 +11,25 @@ router.get("/", async (req, res) => { | |||
11 | 11 | ||
12 | // GET /r/:id | 12 | // GET /r/:id |
13 | router.get("/r/:subreddit", async (req, res) => { | 13 | router.get("/r/:subreddit", async (req, res) => { |
14 | var subreddit = req.params.subreddit; | 14 | const subreddit = req.params.subreddit; |
15 | var query = req.query ? req.query : {}; | 15 | const query = req.query ? req.query : {}; |
16 | if (!query.sort) { | 16 | if (!query.sort) { |
17 | query.sort = "hot"; | 17 | query.sort = "hot"; |
18 | } | 18 | } |
19 | 19 | ||
20 | var postsReq = G.getSubmissions(query.sort, `${subreddit}`, query); | 20 | const postsReq = G.getSubmissions(query.sort, `${subreddit}`, query); |
21 | var aboutReq = G.getSubreddit(`${subreddit}`); | 21 | const aboutReq = G.getSubreddit(`${subreddit}`); |
22 | 22 | ||
23 | var [posts, about] = await Promise.all([postsReq, aboutReq]); | 23 | const [posts, about] = await Promise.all([postsReq, aboutReq]); |
24 | 24 | ||
25 | res.render("index", { subreddit, posts, about, query }); | 25 | res.render("index", { subreddit, posts, about, query }); |
26 | }); | 26 | }); |
27 | 27 | ||
28 | // GET /comments/:id | 28 | // GET /comments/:id |
29 | router.get("/comments/:id", async (req, res) => { | 29 | router.get("/comments/:id", async (req, res) => { |
30 | var id = req.params.id; | 30 | const id = req.params.id; |
31 | 31 | ||
32 | var params = { | 32 | const params = { |
33 | limit: 50, | 33 | limit: 50, |
34 | }; | 34 | }; |
35 | response = await G.getSubmissionComments(id, params); | 35 | response = await G.getSubmissionComments(id, params); |
@@ -44,20 +44,19 @@ router.get("/subs", async (req, res) => { | |||
44 | 44 | ||
45 | // GET /media | 45 | // GET /media |
46 | router.get("/media/*", async (req, res) => { | 46 | router.get("/media/*", async (req, res) => { |
47 | var url = req.params[0]; | 47 | const url = req.params[0]; |
48 | console.log(`making request to ${url}`); | 48 | const ext = url.split(".").pop().toLowerCase(); |
49 | return await fetch(url, { | 49 | const kind = ["jpg", "jpeg", "png", "gif", "webp"].includes(ext) |
50 | headers: { | 50 | ? "img" |
51 | Accept: "*/*", | 51 | : "video"; |
52 | }, | 52 | res.render("media", { kind, url }); |
53 | }); | ||
54 | }); | 53 | }); |
55 | 54 | ||
56 | module.exports = router; | 55 | module.exports = router; |
57 | 56 | ||
58 | function unescape_submission(response) { | 57 | function unescape_submission(response) { |
59 | var post = response.submission.data; | 58 | const post = response.submission.data; |
60 | var comments = response.comments; | 59 | const comments = response.comments; |
61 | 60 | ||
62 | if (post.selftext_html) { | 61 | if (post.selftext_html) { |
63 | post.selftext_html = he.decode(post.selftext_html); | 62 | post.selftext_html = he.decode(post.selftext_html); |
diff --git a/src/views/media.pug b/src/views/media.pug new file mode 100644 index 0000000..5df6057 --- /dev/null +++ b/src/views/media.pug | |||
@@ -0,0 +1,4 @@ | |||
1 | if kind == 'img' | ||
2 | img(src=url) | ||
3 | else | ||
4 | video(src=url controls) | ||