diff options
Diffstat (limited to 'src/mixins')
-rw-r--r-- | src/mixins/post.pug | 137 | ||||
-rw-r--r-- | src/mixins/postUtils.pug | 4 |
2 files changed, 61 insertions, 80 deletions
diff --git a/src/mixins/post.pug b/src/mixins/post.pug index c4f3bc5..9021f93 100644 --- a/src/mixins/post.pug +++ b/src/mixins/post.pug | |||
@@ -6,99 +6,76 @@ mixin post(p, currentUrl) | |||
6 | - var sortQuery = query && query.sort ? query.sort + (query.t ? '&t=' + query.t : '') : 'hot' | 6 | - var sortQuery = query && query.sort ? query.sort + (query.t ? '&t=' + query.t : '') : 'hot' |
7 | article(class=`post`) | 7 | article(class=`post`) |
8 | div.post-container(class=`${query.view} ${p.stickied?"sticky":""}`) | 8 | div.post-container(class=`${query.view} ${p.stickied?"sticky":""}`) |
9 | div.post-text(class=`${query.view}`) | 9 | div.post-info |
10 | div.title-container(class=`${query.view}`) | 10 | div.post-text(class=`${query.view}`) |
11 | a(class=`${query.view}`, href=`/comments/${p.id}?from=${from}&sort=${sortQuery}&view=${viewQuery}`) | 11 | div.title-container(class=`${query.view}`) |
12 | != p.title | 12 | a(class=`${query.view}`, href=`/comments/${p.id}?from=${from}&sort=${sortQuery}&view=${viewQuery}`) |
13 | span.domain (#{p.domain}) | 13 | != p.title |
14 | div.info-container | 14 | span.domain (#{p.domain}) |
15 | p | 15 | div.info-container |
16 | | #{fmtnum(p.ups)} ↑ | 16 | p |
17 | if p.gilded > 0 | 17 | | #{fmtnum(p.ups)} ↑ |
18 | if p.gilded > 0 | ||
19 | | · | ||
20 | span.gilded | ||
21 | | #{p.gilded} ☆ | ||
22 | span.post-author | ||
23 | | · | ||
24 | | u/#{p.author} | ||
18 | | · | 25 | | · |
19 | span.gilded | 26 | | #{timeDifference(Date.now(), p.created * 1000)} |
20 | | #{p.gilded} ☆ | ||
21 | span.post-author | ||
22 | | · | 27 | | · |
23 | | u/#{p.author} | 28 | a(href=`/r/${p.subreddit}?sort=${sortQuery}&view=${viewQuery}`) r/#{p.subreddit} |
24 | | · | 29 | | · |
25 | | #{timeDifference(Date.now(), p.created * 1000)} | 30 | a(href=`/comments/${p.id}?from=${from}&sort=${sortQuery}&view=${viewQuery}`) #{fmtnum (p.num_comments)} ↩ |
26 | | · | 31 | if (query.view == "card" && !isPostMedia(p) && p.selftext_html) |
27 | a(href=`/r/${p.subreddit}?sort=${sortQuery}&view=${viewQuery}`) r/#{p.subreddit} | 32 | div.self-text-overflow.card |
28 | | · | 33 | if p.spoiler || p.over_18 |
29 | a(href=`/comments/${p.id}?from=${from}&sort=${sortQuery}&view=${viewQuery}`) #{fmtnum (p.num_comments)} ↩ | 34 | div.spoiler(id=`spoiler_${p.id}`, onclick=`javascript:document.getElementById('spoiler_${p.id}').style.display = 'none';`) |
30 | if (query.view == "card" && !isPostGallery(p) && !isPostImage(p) && !isPostVideo(p) && p.selftext_html) | 35 | h2 |
31 | div.self-text-overflow(class='card') | 36 | != p.over_18 ? 'nsfw' : 'spoiler' |
32 | if query.view == "card" && (p.spoiler || p.over_18) | 37 | div.self-text.card |
33 | div.spoiler(id=`spoiler_${p.id}`, onclick=`javascript:document.getElementById('spoiler_${p.id}').style.display = 'none';`) | 38 | != convertInlineImageLinks(p.selftext_html) |
34 | h2 | 39 | if query.view != "card" |
35 | != p.over_18 ? 'nsfw' : 'spoiler' | 40 | div.media-preview |
36 | div.self-text(class='card') | 41 | - var onclick = `toggleDetails('${p.id}')` |
37 | != convertInlineImageLinks(p.selftext_html) | 42 | if isPostGallery(p) |
38 | div.media-preview(class=`${query.view}`) | 43 | - var item = (p.over_18 ? `/nsfw.svg` : p.spoiler ? `/spoiler.svg` : postGalleryItems(p)[0].url) |
39 | - var onclick = query.view != "card" ? `toggleDetails('${p.id}')` : `` | 44 | img(src=item onclick=onclick) |
40 | if query.view == "card" && (p.spoiler || p.over_18) && (isPostGallery(p) || isPostImage(p) || isPostVideo(p)) | 45 | else if isPostImage(p) |
41 | div.spoiler(id=`spoiler_${p.id}`, onclick=`javascript:document.getElementById('spoiler_${p.id}').style.display = 'none';`) | 46 | - var url = postThumbnail(p) |
42 | h2 | 47 | img(src=url onclick=onclick) |
43 | != p.over_18 ? 'nsfw' : 'spoiler' | 48 | else if isPostVideo(p) |
44 | if isPostGallery(p) | 49 | - var decodedVideos = decodePostVideoUrls(p) |
45 | - var item = postGalleryItems(p)[0] | 50 | video(data-dashjs-player="" playsinline="" autoplay="" muted="" onclick=`toggleDetails('${p.id}')` src=decodedVideos[3] poster=decodedVideos[4] width="100px" height="100px") |
46 | if query.view == "card" | 51 | else if isPostLink(p) |
47 | div.gallery(class=`${query.view}`) | 52 | a(href=p.url) |
48 | each item in postGalleryItems(p) | 53 | | ↗ |
49 | div.gallery-item(class=`${query.view}`) | ||
50 | a(href=`/media/${item.url}`) | ||
51 | img(src=item.url loading="lazy") | ||
52 | div.gallery-item-idx(class=`${query.view}`) | ||
53 | | #{`${item.idx}/${item.total}`} | ||
54 | else | ||
55 | img(src=item.url onclick=onclick) | ||
56 | else if isPostImage(p) | ||
57 | - var url = query.view == "card" ? p.url : postThumbnail(p) | ||
58 | #{query.view == "card" ? "a href=/media/" + url : span} | ||
59 | img(src=url onclick=onclick) | ||
60 | else if isPostVideo(p) | ||
61 | - var decodedVideos = decodePostVideoUrls(p) | ||
62 | if query.view == "card" | ||
63 | video(controls="" muted="" data-dashjs-player="" preload="metadata" poster=decodedVideos[4]) | ||
64 | // HLS | ||
65 | source(src=decodedVideos[0]) | ||
66 | // Dash | ||
67 | source(src=decodedVideos[1]) | ||
68 | // Fallback | ||
69 | source(src=decodedVideos[2]) | ||
70 | else | ||
71 | video(autoplay="" muted="" data-dashjs-player="" onclick=`toggleDetails('${p.id}')` width="100px" height="100px") | ||
72 | // Scrubber | ||
73 | source(src=decodedVideos[3]) | ||
74 | else if isPostLink(p) | ||
75 | a(href=p.url) | ||
76 | if (query.view == 'card') | ||
77 | | #{p.domain} | ||
78 | | ↗ | ||
79 | 54 | ||
80 | if query.view == "compact" && (isPostGallery(p) || isPostImage(p) || isPostVideo(p)) | 55 | details(id=`${p.id}` open=(query.view == "card" && (isPostMedia(p) || isPostLink(p))) class=`${query.view}`) |
81 | details(id=`${p.id}`) | ||
82 | summary.expand-post expand media | 56 | summary.expand-post expand media |
83 | div.image-viewer | 57 | div.image-viewer |
58 | if query.view == "card" && (p.spoiler || p.over_18) && isPostMedia(p) | ||
59 | div.spoiler(id=`spoiler_${p.id}`, onclick=`javascript:document.getElementById('spoiler_${p.id}').style.display = 'none';`) | ||
60 | h2 | ||
61 | != p.over_18 ? 'nsfw' : 'spoiler' | ||
84 | if isPostGallery(p) | 62 | if isPostGallery(p) |
85 | div.gallery | 63 | div.gallery |
86 | each item in postGalleryItems(p) | 64 | each item in postGalleryItems(p) |
87 | div.gallery-item | 65 | div.gallery-item |
88 | div.gallery-item-idx | ||
89 | | #{`${item.idx}/${item.total}`} | ||
90 | a(href=`/media/${item.url}`) | 66 | a(href=`/media/${item.url}`) |
91 | img(src=item.url loading="lazy") | 67 | img(src=item.url loading="lazy") |
68 | div.gallery-item-idx | ||
69 | | #{`${item.idx}/${item.total}`} | ||
92 | else if isPostImage(p) | 70 | else if isPostImage(p) |
93 | a(href=`/media/${p.url}`) | 71 | a(href=`/media/${p.url}`) |
94 | img(src=p.url loading="lazy").post-media | 72 | img(src=p.url loading="lazy") |
95 | else if isPostVideo(p) | 73 | else if isPostVideo(p) |
96 | video(controls="" muted="" data-dashjs-player="" preload="metadata" playsinline="" poster=decodedVideos[4] objectfit="contain" loading="lazy").post-media | 74 | - var decodedVideos = decodePostVideoUrls(p) |
97 | //HLS | 75 | video(data-dashjs-player="" playsinline="" controls="" muted="" preload="metadata" src=decodedVideos[1] poster=decodedVideos[4]) |
98 | source(src=decodedVideos[0]) | 76 | else if isPostLink(p) |
99 | // Dash | 77 | a(href=p.url) |
100 | source(src=decodedVideos[1]) | 78 | | #{p.domain} ↗ |
101 | // Fallback | 79 | if (query.view == "compact") |
102 | source(src=decodedVideos[2]) | ||
103 | button(onclick=`toggleDetails('${p.id}')`) | 80 | button(onclick=`toggleDetails('${p.id}')`) |
104 | | close | 81 | | close |
diff --git a/src/mixins/postUtils.pug b/src/mixins/postUtils.pug index b96ff1e..7eef9b2 100644 --- a/src/mixins/postUtils.pug +++ b/src/mixins/postUtils.pug | |||
@@ -1,4 +1,8 @@ | |||
1 | - | 1 | - |
2 | function isPostMedia(p) { | ||
3 | return isPostImage(p) || isPostGallery(p) || isPostVideo(p); | ||
4 | } | ||
5 | - | ||
2 | function isPostGallery(p) { | 6 | function isPostGallery(p) { |
3 | return (p.is_gallery && p.is_gallery == true); | 7 | return (p.is_gallery && p.is_gallery == true); |
4 | } | 8 | } |