aboutsummaryrefslogtreecommitdiff
path: root/src/mixins
diff options
context:
space:
mode:
Diffstat (limited to 'src/mixins')
-rw-r--r--src/mixins/post.pug137
-rw-r--r--src/mixins/postUtils.pug4
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 }