diff --git a/packages/frontend/src/lib/i18n/locales/en.ts b/packages/frontend/src/lib/i18n/locales/en.ts index 18c9e3f..356d0ee 100644 --- a/packages/frontend/src/lib/i18n/locales/en.ts +++ b/packages/frontend/src/lib/i18n/locales/en.ts @@ -274,6 +274,8 @@ export default { trending: "Trending", recent: "Most Recent", popular: "Most Liked", + most_liked: "Most Liked", + most_played: "Most Played", duration: "By Duration", name: "A-Z", }, diff --git a/packages/frontend/src/routes/models/[slug]/+page.svelte b/packages/frontend/src/routes/models/[slug]/+page.svelte index 2c1505e..3c8df20 100644 --- a/packages/frontend/src/routes/models/[slug]/+page.svelte +++ b/packages/frontend/src/routes/models/[slug]/+page.svelte @@ -27,6 +27,14 @@ let images = $derived( thumbnail: getAssetUrl(p.id, "thumbnail"), })), ); + +// Calculate total likes and plays from all videos +let totalLikes = $derived( + data.videos.reduce((sum, video) => sum + (video.likes_count || 0), 0) +); +let totalPlays = $derived( + data.videos.reduce((sum, video) => sum + (video.plays_count || 0), 0) +);
-
{data.videos.length}
{$_('models.videos')}
- - +
Total Plays
+
{data.commentsCount} @@ -267,15 +269,18 @@ let images = $derived( > {video.title} - +
+ + {video.likes_count || 0} +
+
{/each} diff --git a/packages/frontend/src/routes/videos/+page.svelte b/packages/frontend/src/routes/videos/+page.svelte index e2d27ed..ad55264 100644 --- a/packages/frontend/src/routes/videos/+page.svelte +++ b/packages/frontend/src/routes/videos/+page.svelte @@ -17,7 +17,7 @@ import { formatVideoDuration } from "$lib/utils"; const timeAgo = new TimeAgo("en"); let searchQuery = $state(""); -let sortBy = $state("trending"); +let sortBy = $state("recent"); let categoryFilter = $state("all"); let durationFilter = $state("all"); @@ -42,20 +42,14 @@ const filteredVideos = $derived(() => { return matchesSearch && matchesCategory && matchesDuration; }) .sort((a, b) => { - // if (sortBy === "trending") - // return ( - // parseInt(b.views.replace(/[^\d]/g, "")) - - // parseInt(a.views.replace(/[^\d]/g, "")) - // ); if (sortBy === "recent") return ( new Date(b.upload_date).getTime() - new Date(a.upload_date).getTime() ); - // if (sortBy === "popular") - // return ( - // parseInt(b.likes.replace(/[^\d]/g, "")) - - // parseInt(a.likes.replace(/[^\d]/g, "")) - // ); + if (sortBy === "most_liked") + return (b.likes_count || 0) - (a.likes_count || 0); + if (sortBy === "most_played") + return (b.plays_count || 0) - (a.plays_count || 0); if (sortBy === "duration") return b.movie.duration - a.movie.duration; return a.title.localeCompare(b.title); }); @@ -175,23 +169,23 @@ const filteredVideos = $derived(() => { - {sortBy === 'trending' - ? $_('videos.sort.trending') - : sortBy === 'recent' - ? $_('videos.sort.recent') - : sortBy === 'popular' - ? $_('videos.sort.popular') + {sortBy === 'recent' + ? $_('videos.sort.recent') + : sortBy === 'most_liked' + ? $_('videos.sort.most_liked') + : sortBy === 'most_played' + ? $_('videos.sort.most_played') : sortBy === 'duration' ? $_('videos.sort.duration') : $_('videos.sort.name')} - {$_('videos.sort.trending')} {$_('videos.sort.recent')} - {$_('videos.sort.popular')}{$_('videos.sort.most_liked')} + {$_('videos.sort.most_played')} {$_('videos.sort.duration')}