From cb0350150e8995fe389d37ff20388f13b6f4a681 Mon Sep 17 00:00:00 2001 From: jeffvli Date: Sat, 15 Nov 2025 13:23:27 -0800 Subject: [PATCH] add overrideQuery to all list views --- .../albums/components/album-list-content.tsx | 14 ++++-- .../components/album-artist-list-content.tsx | 14 ++++-- .../components/artist-list-content.tsx | 22 +++++---- .../genres/components/genre-list-content.tsx | 12 +++-- .../components/playlist-list-content.tsx | 48 ++++++++++++------- .../songs/components/song-list-content.tsx | 14 ++++-- 6 files changed, 78 insertions(+), 46 deletions(-) diff --git a/src/renderer/features/albums/components/album-list-content.tsx b/src/renderer/features/albums/components/album-list-content.tsx index 9179562e8..abac11954 100644 --- a/src/renderer/features/albums/components/album-list-content.tsx +++ b/src/renderer/features/albums/components/album-list-content.tsx @@ -3,6 +3,7 @@ import { lazy, Suspense } from 'react'; import { useAlbumListFilters } from '/@/renderer/features/albums/hooks/use-album-list-filters'; import { ItemListSettings, useCurrentServer, useListSettings } from '/@/renderer/store'; import { Spinner } from '/@/shared/components/spinner/spinner'; +import { AlbumListQuery } from '/@/shared/types/domain-types'; import { ItemListKey, ListDisplayType, ListPaginationType } from '/@/shared/types/types'; const AlbumListInfiniteGrid = lazy(() => @@ -45,13 +46,16 @@ export const AlbumListContent = () => { ); }; +export type OverrideAlbumListQuery = Omit; + export const AlbumListView = ({ display, grid, itemsPerPage, + overrideQuery, pagination, table, -}: ItemListSettings) => { +}: ItemListSettings & { overrideQuery?: OverrideAlbumListQuery }) => { const server = useCurrentServer(); const { query } = useAlbumListFilters(); @@ -65,7 +69,7 @@ export const AlbumListView = ({ gap={grid.itemGap} itemsPerPage={itemsPerPage} itemsPerRow={grid.itemsPerRowEnabled ? grid.itemsPerRow : undefined} - query={query} + query={overrideQuery ?? query} serverId={server.id} /> ); @@ -76,7 +80,7 @@ export const AlbumListView = ({ gap={grid.itemGap} itemsPerPage={itemsPerPage} itemsPerRow={grid.itemsPerRowEnabled ? grid.itemsPerRow : undefined} - query={query} + query={overrideQuery ?? query} serverId={server.id} /> ); @@ -97,7 +101,7 @@ export const AlbumListView = ({ enableRowHoverHighlight={table.enableRowHoverHighlight} enableVerticalBorders={table.enableVerticalBorders} itemsPerPage={itemsPerPage} - query={query} + query={overrideQuery ?? query} serverId={server.id} size={table.size} /> @@ -113,7 +117,7 @@ export const AlbumListView = ({ enableRowHoverHighlight={table.enableRowHoverHighlight} enableVerticalBorders={table.enableVerticalBorders} itemsPerPage={itemsPerPage} - query={query} + query={overrideQuery ?? query} serverId={server.id} size={table.size} /> diff --git a/src/renderer/features/artists/components/album-artist-list-content.tsx b/src/renderer/features/artists/components/album-artist-list-content.tsx index 96139df05..669826369 100644 --- a/src/renderer/features/artists/components/album-artist-list-content.tsx +++ b/src/renderer/features/artists/components/album-artist-list-content.tsx @@ -3,6 +3,7 @@ import { lazy, Suspense } from 'react'; import { useAlbumArtistListFilters } from '/@/renderer/features/artists/hooks/use-album-artist-list-filters'; import { ItemListSettings, useCurrentServer, useListSettings } from '/@/renderer/store'; import { Spinner } from '/@/shared/components/spinner/spinner'; +import { AlbumArtistListQuery } from '/@/shared/types/domain-types'; import { ItemListKey, ListDisplayType, ListPaginationType } from '/@/shared/types/types'; const AlbumArtistListInfiniteGrid = lazy(() => @@ -55,13 +56,16 @@ export const AlbumArtistListContent = () => { ); }; +export type OverrideAlbumArtistListQuery = Omit; + export const AlbumArtistListView = ({ display, grid, itemsPerPage, + overrideQuery, pagination, table, -}: ItemListSettings) => { +}: ItemListSettings & { overrideQuery?: OverrideAlbumArtistListQuery }) => { const server = useCurrentServer(); const { query } = useAlbumArtistListFilters(); @@ -75,7 +79,7 @@ export const AlbumArtistListView = ({ gap={grid.itemGap} itemsPerPage={itemsPerPage} itemsPerRow={grid.itemsPerRowEnabled ? grid.itemsPerRow : undefined} - query={query} + query={overrideQuery ?? query} serverId={server.id} /> ); @@ -86,7 +90,7 @@ export const AlbumArtistListView = ({ gap={grid.itemGap} itemsPerPage={itemsPerPage} itemsPerRow={grid.itemsPerRowEnabled ? grid.itemsPerRow : undefined} - query={query} + query={overrideQuery ?? query} serverId={server.id} /> ); @@ -107,7 +111,7 @@ export const AlbumArtistListView = ({ enableRowHoverHighlight={table.enableRowHoverHighlight} enableVerticalBorders={table.enableVerticalBorders} itemsPerPage={itemsPerPage} - query={query} + query={overrideQuery ?? query} serverId={server.id} size={table.size} /> @@ -123,7 +127,7 @@ export const AlbumArtistListView = ({ enableRowHoverHighlight={table.enableRowHoverHighlight} enableVerticalBorders={table.enableVerticalBorders} itemsPerPage={itemsPerPage} - query={query} + query={overrideQuery ?? query} serverId={server.id} size={table.size} /> diff --git a/src/renderer/features/artists/components/artist-list-content.tsx b/src/renderer/features/artists/components/artist-list-content.tsx index 142f642b1..45efff68b 100644 --- a/src/renderer/features/artists/components/artist-list-content.tsx +++ b/src/renderer/features/artists/components/artist-list-content.tsx @@ -3,6 +3,7 @@ import { lazy, Suspense } from 'react'; import { useArtistListFilters } from '/@/renderer/features/artists/hooks/use-artist-list-filters'; import { ItemListSettings, useCurrentServer, useListSettings } from '/@/renderer/store'; import { Spinner } from '/@/shared/components/spinner/spinner'; +import { ArtistListQuery } from '/@/shared/types/domain-types'; import { ItemListKey, ListDisplayType, ListPaginationType } from '/@/shared/types/types'; const ArtistListInfiniteGrid = lazy(() => @@ -24,9 +25,11 @@ const ArtistListInfiniteTable = lazy(() => ); const ArtistListPaginatedTable = lazy(() => - import('/@/renderer/features/artists/components/artist-list-paginated-table').then((module) => ({ - default: module.ArtistListPaginatedTable, - })), + import('/@/renderer/features/artists/components/artist-list-paginated-table').then( + (module) => ({ + default: module.ArtistListPaginatedTable, + }), + ), ); export const ArtistListContent = () => { @@ -45,13 +48,16 @@ export const ArtistListContent = () => { ); }; +export type OverrideArtistListQuery = Omit; + export const ArtistListView = ({ display, grid, itemsPerPage, + overrideQuery, pagination, table, -}: ItemListSettings) => { +}: ItemListSettings & { overrideQuery?: OverrideArtistListQuery }) => { const server = useCurrentServer(); const { query } = useArtistListFilters(); @@ -65,7 +71,7 @@ export const ArtistListView = ({ gap={grid.itemGap} itemsPerPage={itemsPerPage} itemsPerRow={grid.itemsPerRowEnabled ? grid.itemsPerRow : undefined} - query={query} + query={overrideQuery ?? query} serverId={server.id} /> ); @@ -76,7 +82,7 @@ export const ArtistListView = ({ gap={grid.itemGap} itemsPerPage={itemsPerPage} itemsPerRow={grid.itemsPerRowEnabled ? grid.itemsPerRow : undefined} - query={query} + query={overrideQuery ?? query} serverId={server.id} /> ); @@ -97,7 +103,7 @@ export const ArtistListView = ({ enableRowHoverHighlight={table.enableRowHoverHighlight} enableVerticalBorders={table.enableVerticalBorders} itemsPerPage={itemsPerPage} - query={query} + query={overrideQuery ?? query} serverId={server.id} size={table.size} /> @@ -113,7 +119,7 @@ export const ArtistListView = ({ enableRowHoverHighlight={table.enableRowHoverHighlight} enableVerticalBorders={table.enableVerticalBorders} itemsPerPage={itemsPerPage} - query={query} + query={overrideQuery ?? query} serverId={server.id} size={table.size} /> diff --git a/src/renderer/features/genres/components/genre-list-content.tsx b/src/renderer/features/genres/components/genre-list-content.tsx index 7bc7606b9..2c931734f 100644 --- a/src/renderer/features/genres/components/genre-list-content.tsx +++ b/src/renderer/features/genres/components/genre-list-content.tsx @@ -3,6 +3,7 @@ import { lazy, Suspense } from 'react'; import { useGenreListFilters } from '/@/renderer/features/genres/hooks/use-genre-list-filters'; import { ItemListSettings, useCurrentServer, useListSettings } from '/@/renderer/store'; import { Spinner } from '/@/shared/components/spinner/spinner'; +import { GenreListQuery } from '/@/shared/types/domain-types'; import { ItemListKey, ListDisplayType, ListPaginationType } from '/@/shared/types/types'; const GenreListInfiniteGrid = lazy(() => @@ -49,9 +50,10 @@ export const GenreListView = ({ display, grid, itemsPerPage, + overrideQuery, pagination, table, -}: ItemListSettings) => { +}: ItemListSettings & { overrideQuery?: Omit }) => { const server = useCurrentServer(); const { query } = useGenreListFilters(); @@ -65,7 +67,7 @@ export const GenreListView = ({ gap={grid.itemGap} itemsPerPage={itemsPerPage} itemsPerRow={grid.itemsPerRowEnabled ? grid.itemsPerRow : undefined} - query={query} + query={overrideQuery ?? query} serverId={server.id} /> ); @@ -76,7 +78,7 @@ export const GenreListView = ({ gap={grid.itemGap} itemsPerPage={itemsPerPage} itemsPerRow={grid.itemsPerRowEnabled ? grid.itemsPerRow : undefined} - query={query} + query={overrideQuery ?? query} serverId={server.id} /> ); @@ -97,7 +99,7 @@ export const GenreListView = ({ enableRowHoverHighlight={table.enableRowHoverHighlight} enableVerticalBorders={table.enableVerticalBorders} itemsPerPage={itemsPerPage} - query={query} + query={overrideQuery ?? query} serverId={server.id} size={table.size} /> @@ -113,7 +115,7 @@ export const GenreListView = ({ enableRowHoverHighlight={table.enableRowHoverHighlight} enableVerticalBorders={table.enableVerticalBorders} itemsPerPage={itemsPerPage} - query={query} + query={overrideQuery ?? query} serverId={server.id} size={table.size} /> diff --git a/src/renderer/features/playlists/components/playlist-list-content.tsx b/src/renderer/features/playlists/components/playlist-list-content.tsx index ee638021e..15ba48ccd 100644 --- a/src/renderer/features/playlists/components/playlist-list-content.tsx +++ b/src/renderer/features/playlists/components/playlist-list-content.tsx @@ -3,34 +3,45 @@ import { lazy, Suspense } from 'react'; import { usePlaylistListFilters } from '/@/renderer/features/playlists/hooks/use-playlist-list-filters'; import { ItemListSettings, useCurrentServer, useListSettings } from '/@/renderer/store'; import { Spinner } from '/@/shared/components/spinner/spinner'; +import { PlaylistListQuery } from '/@/shared/types/domain-types'; import { ItemListKey, ListDisplayType, ListPaginationType } from '/@/shared/types/types'; const PlaylistListInfiniteGrid = lazy(() => - import('/@/renderer/features/playlists/components/playlist-list-infinite-grid').then((module) => ({ - default: module.PlaylistListInfiniteGrid, - })), + import('/@/renderer/features/playlists/components/playlist-list-infinite-grid').then( + (module) => ({ + default: module.PlaylistListInfiniteGrid, + }), + ), ); const PlaylistListPaginatedGrid = lazy(() => - import('/@/renderer/features/playlists/components/playlist-list-paginated-grid').then((module) => ({ - default: module.PlaylistListPaginatedGrid, - })), + import('/@/renderer/features/playlists/components/playlist-list-paginated-grid').then( + (module) => ({ + default: module.PlaylistListPaginatedGrid, + }), + ), ); const PlaylistListInfiniteTable = lazy(() => - import('/@/renderer/features/playlists/components/playlist-list-infinite-table').then((module) => ({ - default: module.PlaylistListInfiniteTable, - })), + import('/@/renderer/features/playlists/components/playlist-list-infinite-table').then( + (module) => ({ + default: module.PlaylistListInfiniteTable, + }), + ), ); const PlaylistListPaginatedTable = lazy(() => - import('/@/renderer/features/playlists/components/playlist-list-paginated-table').then((module) => ({ - default: module.PlaylistListPaginatedTable, - })), + import('/@/renderer/features/playlists/components/playlist-list-paginated-table').then( + (module) => ({ + default: module.PlaylistListPaginatedTable, + }), + ), ); export const PlaylistListContent = () => { - const { display, grid, itemsPerPage, pagination, table } = useListSettings(ItemListKey.PLAYLIST); + const { display, grid, itemsPerPage, pagination, table } = useListSettings( + ItemListKey.PLAYLIST, + ); return ( }> @@ -49,9 +60,10 @@ export const PlaylistListView = ({ display, grid, itemsPerPage, + overrideQuery, pagination, table, -}: ItemListSettings) => { +}: ItemListSettings & { overrideQuery?: Omit }) => { const server = useCurrentServer(); const { query } = usePlaylistListFilters(); @@ -65,7 +77,7 @@ export const PlaylistListView = ({ gap={grid.itemGap} itemsPerPage={itemsPerPage} itemsPerRow={grid.itemsPerRowEnabled ? grid.itemsPerRow : undefined} - query={query} + query={overrideQuery ?? query} serverId={server.id} /> ); @@ -76,7 +88,7 @@ export const PlaylistListView = ({ gap={grid.itemGap} itemsPerPage={itemsPerPage} itemsPerRow={grid.itemsPerRowEnabled ? grid.itemsPerRow : undefined} - query={query} + query={overrideQuery ?? query} serverId={server.id} /> ); @@ -97,7 +109,7 @@ export const PlaylistListView = ({ enableRowHoverHighlight={table.enableRowHoverHighlight} enableVerticalBorders={table.enableVerticalBorders} itemsPerPage={itemsPerPage} - query={query} + query={overrideQuery ?? query} serverId={server.id} size={table.size} /> @@ -113,7 +125,7 @@ export const PlaylistListView = ({ enableRowHoverHighlight={table.enableRowHoverHighlight} enableVerticalBorders={table.enableVerticalBorders} itemsPerPage={itemsPerPage} - query={query} + query={overrideQuery ?? query} serverId={server.id} size={table.size} /> diff --git a/src/renderer/features/songs/components/song-list-content.tsx b/src/renderer/features/songs/components/song-list-content.tsx index 6094aea0b..191b7e400 100644 --- a/src/renderer/features/songs/components/song-list-content.tsx +++ b/src/renderer/features/songs/components/song-list-content.tsx @@ -3,6 +3,7 @@ import { lazy, Suspense } from 'react'; import { useSongListFilters } from '/@/renderer/features/songs/hooks/use-song-list-filters'; import { ItemListSettings, useCurrentServer, useListSettings } from '/@/renderer/store'; import { Spinner } from '/@/shared/components/spinner/spinner'; +import { SongListQuery } from '/@/shared/types/domain-types'; import { ItemListKey, ListDisplayType, ListPaginationType } from '/@/shared/types/types'; const SongListInfiniteGrid = lazy(() => @@ -42,13 +43,16 @@ export const SongListContent = () => { ); }; +export type OverrideSongListQuery = Omit; + export const SongListView = ({ display, grid, itemsPerPage, + overrideQuery, pagination, table, -}: ItemListSettings) => { +}: ItemListSettings & { overrideQuery?: OverrideSongListQuery }) => { const server = useCurrentServer(); const { query } = useSongListFilters(); @@ -62,7 +66,7 @@ export const SongListView = ({ gap={grid.itemGap} itemsPerPage={itemsPerPage} itemsPerRow={grid.itemsPerRowEnabled ? grid.itemsPerRow : undefined} - query={query} + query={overrideQuery ?? query} serverId={server.id} /> ); @@ -72,7 +76,7 @@ export const SongListView = ({ gap={grid.itemGap} itemsPerPage={itemsPerPage} itemsPerRow={grid.itemsPerRowEnabled ? grid.itemsPerRow : undefined} - query={query} + query={overrideQuery ?? query} serverId={server.id} /> ); @@ -92,7 +96,7 @@ export const SongListView = ({ enableRowHoverHighlight={table.enableRowHoverHighlight} enableVerticalBorders={table.enableVerticalBorders} itemsPerPage={itemsPerPage} - query={query} + query={overrideQuery ?? query} serverId={server.id} size={table.size} /> @@ -107,7 +111,7 @@ export const SongListView = ({ enableRowHoverHighlight={table.enableRowHoverHighlight} enableVerticalBorders={table.enableVerticalBorders} itemsPerPage={itemsPerPage} - query={query} + query={overrideQuery ?? query} serverId={server.id} size={table.size} />