1include ../utils
2include postUtils
3mixin post(p, currentUrl)
4 - var from = encodeURIComponent(currentUrl)
5 - var viewQuery = query && query.view ? query.view : 'compact'
6 - var sortQuery = query && query.sort ? query.sort + (query.t ? '&t=' + query.t : '') : 'hot'
7 article(class=`post`)
8 div.post-container(class=`${query.view} ${p.stickied?"sticky":""}`)
9 div.post-info
10 div.post-text(class=`${query.view}`)
11 div.title-container(class=`${query.view}`)
12 a(class=`${query.view}`, href=`/comments/${p.id}?from=${from}&sort=${sortQuery}&view=${viewQuery}`)
13 != p.title
14 span.domain (#{p.domain})
15 div.info-container
16 p
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}
25 | ·
26 | #{timeDifference(Date.now(), p.created * 1000)}
27 | ·
28 a(href=`/r/${p.subreddit}?view=${viewQuery}`) r/#{p.subreddit}
29 | ·
30 a(href=`/comments/${p.id}?from=${from}`) #{fmtnum (p.num_comments)} ↩
31 if (query.view == "card" && !isPostMedia(p) && p.selftext_html)
32 div.self-text-overflow.card
33 if p.spoiler || p.over_18
34 div.spoiler(id=`spoiler_${p.id}`, onclick=`javascript:document.getElementById('spoiler_${p.id}').style.display = 'none';`)
35 h2
36 != p.over_18 ? 'nsfw' : 'spoiler'
37 div.self-text.card
38 != convertInlineImageLinks(p.selftext_html)
39 if query.view != "card"
40 div.media-preview
41 - var onclick = `toggleDetails('${p.id}')`
42 if isPostGallery(p)
43 - var item = (p.over_18 ? `/nsfw.svg` : p.spoiler ? `/spoiler.svg` : postGalleryItems(p)[0].url)
44 img(src=item onclick=onclick)
45 else if isPostImage(p)
46 - var url = postThumbnail(p)
47 img(src=url onclick=onclick)
48 else if isPostVideo(p)
49 - var decodedVideos = decodePostVideoUrls(p)
50 video(data-dashjs-player="" playsinline="" autoplay="" muted="" onclick=`toggleDetails('${p.id}')` src=decodedVideos[3] poster=decodedVideos[4] width="100px" height="100px")
51 else if isPostLink(p)
52 a(href=p.url)
53 | ↗
54
55 details(id=`${p.id}` open=(query.view == "card" && (isPostMedia(p) || isPostLink(p))) class=`${query.view}`)
56 summary.expand-post expand media
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'
62 if isPostGallery(p)
63 div.gallery
64 each item in postGalleryItems(p)
65 div.gallery-item
66 a(href=`/media/${item.url}`)
67 img(src=item.url loading="lazy")
68 div.gallery-item-idx
69 | #{`${item.idx}/${item.total}`}
70 else if isPostImage(p)
71 a(href=`/media/${p.url}`)
72 img(src=p.url loading="lazy")
73 else if isPostVideo(p)
74 - var decodedVideos = decodePostVideoUrls(p)
75 video(data-dashjs-player="" playsinline="" controls="" muted="" preload="metadata" src=decodedVideos[1] poster=decodedVideos[4])
76 else if isPostLink(p)
77 a(href=p.url)
78 | #{p.domain} ↗
79 if (query.view == "compact")
80 button(onclick=`toggleDetails('${p.id}')`)
81 | close