Subscriptions panel

Add better thumb res & add sub link on videos

Changed files
+12 -7
src
fragments
routes
+6 -4
src/fragments/video_grid.rs
··· 1 1 use maud::{Markup, html}; 2 2 use rustypipe::model::VideoItem; 3 3 4 + type SubId = i32; 5 + 4 6 const MINUTE: u32 = 60; 5 7 const HOUR: u32 = 3600; 6 8 7 - pub fn video_grid(videos: Vec<VideoItem>) -> Markup { 9 + pub fn video_grid(videos: Vec<(VideoItem, SubId)>) -> Markup { 8 10 html!( 9 11 10 12 ol .thumb-grid { 11 - @for vid in videos.into_iter().take(100) { 13 + @for (vid, sub_id) in videos.into_iter().take(100) { 12 14 @let channel = vid.channel.unwrap(); 13 15 @let duration = vid.duration.unwrap_or_default(); 14 16 li { 15 17 vid-thumbnail { 16 - img src=(vid.thumbnail.first().unwrap().url); 18 + img src=(vid.thumbnail.last().unwrap().url); 17 19 18 20 vid-timestamp { 19 21 @if (duration / HOUR) > 0 { ··· 37 39 } 38 40 39 41 vid-details-small { 40 - vid-channel { (channel.name) } 42 + vid-channel { a href={"/sub/" (sub_id)} { (channel.name)} } 41 43 upload-date { (vid.publish_date_txt.unwrap_or_default())} 42 44 } 43 45 }
+6 -3
src/routes/index.rs
··· 130 130 } 131 131 } 132 132 133 - pub async fn get_videos(redis: Arc<Mutex<Redis>>, subscriptions: &[Sub]) -> Vec<VideoItem> { 133 + pub async fn get_videos(redis: Arc<Mutex<Redis>>, subscriptions: &[Sub]) -> Vec<(VideoItem, i32)> { 134 134 let rp = RustyPipe::new(); 135 135 136 136 let mut videos = vec![]; 137 137 for subscription in subscriptions { 138 - let vids = memoized_channel_videos_tab(&subscription.channel_id, &rp, redis.clone()).await; 138 + let vids = memoized_channel_videos_tab(&subscription.channel_id, &rp, redis.clone()) 139 + .await 140 + .into_iter() 141 + .map(|vid| (vid, subscription.db_id)); 139 142 videos.extend(vids); 140 143 } 141 144 142 145 videos.sort_by(|a, b| { 143 - let make_timestamp = |e: &VideoItem| { 146 + let make_timestamp = |(e, _): &(VideoItem, _)| { 144 147 e.publish_date 145 148 .map(|t| t.unix_timestamp()) 146 149 .unwrap_or_default()