add loading overlay to playqueue on fetching

This commit is contained in:
jeffvli
2025-11-10 20:28:46 -08:00
parent c5fb5da574
commit 8ffb65e894
2 changed files with 28 additions and 23 deletions
@@ -5,8 +5,10 @@ import { forwardRef, useEffect, useMemo, useRef } from 'react';
import { ItemTableList } from '/@/renderer/components/item-list/item-table-list/item-table-list';
import { ItemTableListColumn } from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
import { useIsPlayerFetching } from '/@/renderer/features/player/context/player-context';
import { useListSettings, usePlayerQueue } from '/@/renderer/store';
import { searchSongs } from '/@/renderer/utils/search-songs';
import { LoadingOverlay } from '/@/shared/components/loading-overlay/loading-overlay';
import { LibraryItem, QueueSong } from '/@/shared/types/domain-types';
import { ItemListKey } from '/@/shared/types/types';
@@ -19,6 +21,7 @@ export const PlayQueue = forwardRef(({ listKey, searchTerm }: QueueProps, ref: R
const { table } = useListSettings(listKey);
const queue = usePlayerQueue();
const isFetching = useIsPlayerFetching();
const data: QueueSong[] = useMemo(() => {
if (searchTerm) {
@@ -58,26 +61,29 @@ export const PlayQueue = forwardRef(({ listKey, searchTerm }: QueueProps, ref: R
}, [data.length, playQueueKeyRef]);
return (
<ItemTableList
CellComponent={ItemTableListColumn}
columns={table.columns}
data={data || []}
enableAlternateRowColors={table.enableAlternateRowColors}
enableDrag={true}
enableExpansion={false}
enableHeader={true}
enableHorizontalBorders={table.enableHorizontalBorders}
enableRowHoverHighlight={table.enableRowHoverHighlight}
enableSelection={true}
enableVerticalBorders={table.enableVerticalBorders}
initialTop={{
to: 0,
type: 'offset',
}}
itemType={LibraryItem.QUEUE_SONG}
key={playQueueKeyRef.current.key}
ref={ref}
size={table.size}
/>
<>
<LoadingOverlay visible={isFetching} />
<ItemTableList
CellComponent={ItemTableListColumn}
columns={table.columns}
data={data || []}
enableAlternateRowColors={table.enableAlternateRowColors}
enableDrag={true}
enableExpansion={false}
enableHeader={true}
enableHorizontalBorders={table.enableHorizontalBorders}
enableRowHoverHighlight={table.enableRowHoverHighlight}
enableSelection={true}
enableVerticalBorders={table.enableVerticalBorders}
initialTop={{
to: 0,
type: 'offset',
}}
itemType={LibraryItem.QUEUE_SONG}
key={playQueueKeyRef.current.key}
ref={ref}
size={table.size}
/>
</>
);
});
@@ -7,11 +7,10 @@ import { ItemListKey } from '/@/shared/types/types';
export const SidebarPlayQueue = () => {
const tableRef = useRef<null>(null);
// const queueRef = useRef<null | { grid: AgGridReactType<Song> }>(null);
const [search, setSearch] = useState<string | undefined>(undefined);
return (
<Flex direction="column" h="100%">
<Flex direction="column" h="100%" w="100%">
<PlayQueueListControls
handleSearch={setSearch}
searchTerm={search}