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