From 926d7f714e82922bac1d5d0e4aec69f7caef4db6 Mon Sep 17 00:00:00 2001 From: jeffvli Date: Mon, 26 Dec 2022 05:08:01 -0800 Subject: [PATCH] Adjust album list header/filters --- .../albums/components/album-list-header.tsx | 113 ++++++++---------- .../components/jellyfin-album-filters.tsx | 97 ++++++++------- .../components/navidrome-album-filters.tsx | 88 ++++++++++---- 3 files changed, 173 insertions(+), 125 deletions(-) diff --git a/src/renderer/features/albums/components/album-list-header.tsx b/src/renderer/features/albums/components/album-list-header.tsx index 1161ced3..8907979a 100644 --- a/src/renderer/features/albums/components/album-list-header.tsx +++ b/src/renderer/features/albums/components/album-list-header.tsx @@ -136,7 +136,7 @@ export const AlbumListHeader = ({ gridRef }: AlbumListHeaderProps) => { ); const handleFilterChange = useCallback( - async (filters: any) => { + async (filters: AlbumListFilter) => { gridRef.current?.scrollTo(0); gridRef.current?.resetLoadMoreItemsCache(); @@ -185,14 +185,11 @@ export const AlbumListHeader = ({ gridRef }: AlbumListHeaderProps) => { [handleFilterChange, page.filter.musicFolderId, setFilter], ); - const handleSetOrder = useCallback( - (e: MouseEvent) => { - if (!e.currentTarget?.value) return; - const updatedFilters = setFilter({ sortOrder: e.currentTarget.value as SortOrder }); - handleFilterChange(updatedFilters); - }, - [handleFilterChange, setFilter], - ); + const handleToggleSortOrder = useCallback(() => { + const newSortOrder = filters.sortOrder === SortOrder.ASC ? SortOrder.DESC : SortOrder.ASC; + const updatedFilters = setFilter({ sortOrder: newSortOrder }); + handleFilterChange(updatedFilters); + }, [filters.sortOrder, handleFilterChange, setFilter]); const handleSetViewType = useCallback( (e: MouseEvent) => { @@ -210,7 +207,9 @@ export const AlbumListHeader = ({ gridRef }: AlbumListHeaderProps) => { ); const handleSearch = debounce((e: ChangeEvent) => { - const updatedFilters = setFilter({ searchTerm: e.target.value }); + const updatedFilters = setFilter({ + searchTerm: e.target.value === '' ? undefined : e.target.value, + }); handleFilterChange(updatedFilters); }, 500); @@ -222,7 +221,7 @@ export const AlbumListHeader = ({ gridRef }: AlbumListHeaderProps) => { gap="md" justify="center" > - + + Item size { /> + Display type Card Poster @@ -272,7 +273,7 @@ export const AlbumListHeader = ({ gridRef }: AlbumListHeaderProps) => { - + - - - {ORDER.map((sort) => ( - - {sort.name} - - ))} - - + + )} + {server?.type === ServerType.JELLYFIN && ( - +