jellyfin random play filter

This commit is contained in:
Kendall Garner 2024-09-01 12:25:50 -07:00
parent 93377dcc4f
commit 80931d1b19
No known key found for this signature in database
GPG key ID: 18D2767419676C87
4 changed files with 37 additions and 2 deletions

View file

@ -1,5 +1,5 @@
import { useMemo } from 'react';
import { Divider, Group, Stack } from '@mantine/core';
import { Divider, Group, SelectItem, Stack } from '@mantine/core';
import { closeAllModals, openModal } from '@mantine/modals';
import { QueryClient } from '@tanstack/react-query';
import merge from 'lodash/merge';
@ -16,6 +16,7 @@ import {
GenreListSort,
SortOrder,
ServerListItem,
Played,
} from '/@/renderer/api/types';
import { api } from '/@/renderer/api';
import { useAuthStore } from '/@/renderer/store';
@ -45,6 +46,7 @@ const useShuffleAllStore = create<ShuffleAllSlice>()(
maxYear: 2020,
minYear: 2000,
musicFolder: '',
played: Played.All,
songCount: 100,
})),
{
@ -55,6 +57,12 @@ const useShuffleAllStore = create<ShuffleAllSlice>()(
),
);
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 && (
<Select
clearable
data={PLAYED_DATA}
label="Play filter"
value={played}
onChange={(e) => {
setStore({ played: e as Played });
}}
/>
)}
<Divider />
<Group grow>
<Button