From 80931d1b1976c59405aae0d1f0e30fbf82f659c8 Mon Sep 17 00:00:00 2001 From: Kendall Garner <17521368+kgarner7@users.noreply.github.com> Date: Sun, 1 Sep 2024 12:25:50 -0700 Subject: [PATCH] jellyfin random play filter --- .../api/jellyfin/jellyfin-controller.ts | 7 ++++++ src/renderer/api/jellyfin/jellyfin-types.ts | 1 + src/renderer/api/types.ts | 7 ++++++ .../player/components/shuffle-all-modal.tsx | 24 +++++++++++++++++-- 4 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/renderer/api/jellyfin/jellyfin-controller.ts b/src/renderer/api/jellyfin/jellyfin-controller.ts index 4ce9b381..96a21cb8 100644 --- a/src/renderer/api/jellyfin/jellyfin-controller.ts +++ b/src/renderer/api/jellyfin/jellyfin-controller.ts @@ -56,6 +56,7 @@ import { MoveItemArgs, DownloadArgs, TranscodingArgs, + Played, } from '/@/renderer/api/types'; import { jfApiClient } from '/@/renderer/api/jellyfin/jellyfin-api'; import { jfNormalize } from './jellyfin-normalize'; @@ -892,6 +893,12 @@ const getRandomSongList = async (args: RandomSongListArgs): Promise()( maxYear: 2020, minYear: 2000, musicFolder: '', + played: Played.All, songCount: 100, })), { @@ -55,6 +57,12 @@ const useShuffleAllStore = create()( ), ); +const PLAYED_DATA: SelectItem[] = [ + { label: 'all tracks', value: Played.All }, + { label: 'only unplayed tracks', value: Played.Never }, + { label: 'only played tracks', value: Played.Played }, +]; + export const useShuffleAllStoreActions = () => useShuffleAllStore((state) => state.actions); interface ShuffleAllModalProps { @@ -72,7 +80,7 @@ export const ShuffleAllModal = ({ genres, musicFolders, }: ShuffleAllModalProps) => { - const { genre, limit, maxYear, minYear, enableMaxYear, enableMinYear, musicFolderId } = + const { genre, limit, maxYear, minYear, enableMaxYear, enableMinYear, musicFolderId, played } = useShuffleAllStore(); const { setStore } = useShuffleAllStoreActions(); @@ -91,6 +99,7 @@ export const ShuffleAllModal = ({ maxYear: enableMaxYear ? maxYear || undefined : undefined, minYear: enableMinYear ? minYear || undefined : undefined, musicFolderId: musicFolderId || undefined, + played, }, }), queryKey: queryKeys.songs.randomSongList(server?.id), @@ -185,6 +194,17 @@ export const ShuffleAllModal = ({ setStore({ musicFolderId: e ? String(e) : '' }); }} /> + {server?.type === ServerType.JELLYFIN && ( +