@@ -2,11 +2,13 @@ include ../utils
2
2
include postUtils
3
3
mixin post(p, currentUrl )
4
4
- var from = encodeURIComponent (currentUrl)
5
- article( class =` post ${ p .stickied ? " sticky" : " " } ` )
6
- div.post-container
7
- div.post-text
8
- div.title-container
9
- a( href =` /comments/${ p .id } ?from=${ from} ` )
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-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
12
!= p .title
11
13
span.domain (#{p .domain } )
12
14
div.info-container
@@ -22,50 +24,81 @@ mixin post(p, currentUrl)
22
24
| ·
23
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 )} ↩
28
- div.media-preview
29
+ a( href =` /comments/${ p .id } ?from=${ from} &sort=${ sortQuery} &view=${ viewQuery} ` ) #{fmtnum (p .num_comments )} ↩
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
44
if isPostGallery (p)
30
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
56
else if isPostImage (p)
33
- - var url = postThumbnail (p)
34
- img( src =url onclick =` toggleDetails('${ p .id } ')` )
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)
35
60
else if isPostVideo (p)
36
- - var url = p .secure_media .reddit_video .scrubber_media_url
37
- video( src =url data-dashjs-player width ='100px' height ='100px' onclick =` toggleDetails('${ p .id } ')` )
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 ])
38
74
else if isPostLink (p)
39
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
81
details( id =` ${ p .id } ` )
44
- summary.expand-post expand gallery
45
- div.gallery
46
- each item in postGalleryItems (p)
47
- div.gallery-item
48
- div.gallery-item-idx
49
- | #{` ${ item .idx } /${ item .total } ` }
50
- a( href =` /media/${ item .url } ` )
51
- img( src =item .url loading ="lazy" )
52
- button( onclick =` toggleDetails('${ p .id } ')` ) close
53
- else if isPostImage (p)
54
- details( id =` ${ p .id } ` )
55
- summary.expand-post expand image
56
- a( href =` /media/${ p .url } ` )
57
- img( src =p .url loading ="lazy" ) .post-media
58
- button( onclick =` toggleDetails('${ p .id } ')` ) close
59
- else if isPostVideo (p)
60
- details( id =` ${ p .id } ` )
61
- summary.expand-post expand video
62
- - var url = p .secure_media .reddit_video .dash_url
63
- video( src =url controls data-dashjs-player loading ="lazy" ) .post-media
64
- button( onclick =` toggleDetails('${ p .id } ')` ) close
65
- else if isPostLink (p)
66
- details( id =` ${ p .id } ` )
67
- summary.expand-post expand link
68
- a( href =` ${ p .url } ` )
69
- | #{p .url }
70
- br
71
- button( onclick =` toggleDetails('${ p .id } ')` ) close
82
+ summary.expand-post expand media
83
+ div.image-viewer
84
+ if isPostGallery (p)
85
+ div.gallery
86
+ each item in postGalleryItems (p)
87
+ div.gallery-item
88
+ div.gallery-item-idx
89
+ | #{` ${ item .idx } /${ item .total } ` }
90
+ a( href =` /media/${ item .url } ` )
91
+ img( src =item .url loading ="lazy" )
92
+ else if isPostImage (p)
93
+ a( href =` /media/${ p .url } ` )
94
+ img( src =p .url loading ="lazy" ) .post-media
95
+ else if isPostVideo (p)
96
+ video( controls ="" muted ="" data-dashjs-player ="" preload ="metadata" playsinline ="" poster =decodedVideos[4 ] objectfit ="contain" loading ="lazy" ) .post-media
97
+ //HLS
98
+ source( src =decodedVideos[0 ])
99
+ // Dash
100
+ source( src =decodedVideos[1 ])
101
+ // Fallback
102
+ source( src =decodedVideos[2 ])
103
+ button( onclick =` toggleDetails('${ p .id } ')` )
104
+ | close
0 commit comments