Refresh playlist list on delete (#134)

This commit is contained in:
jeffvli
2023-07-16 23:23:07 -07:00
parent 37e4940c2e
commit be0792a5c7
10 changed files with 64 additions and 4 deletions
@@ -22,6 +22,7 @@ interface BaseGridCardProps {
handlePlayQueueAdd: (options: PlayQueueAddOptions) => void;
itemType: LibraryItem;
playButtonBehavior: Play;
resetInfiniteLoaderCache: () => void;
route: CardRoute;
};
data: any;
@@ -202,6 +203,7 @@ export const DefaultCard = ({
handlePlayQueueAdd={controls.handlePlayQueueAdd}
itemData={data}
itemType={controls.itemType}
resetInfiniteLoaderCache={controls.resetInfiniteLoaderCache}
/>
</ImageContainer>
<DetailContainer>
@@ -7,7 +7,7 @@ import type { PlayQueueAddOptions } from '/@/renderer/types';
import { Play } from '/@/renderer/types';
import { usePlayButtonBehavior } from '/@/renderer/store/settings.store';
import { LibraryItem } from '/@/renderer/api/types';
import { useHandleGeneralContextMenu } from '/@/renderer/features/context-menu/hooks/use-handle-context-menu';
import { useHandleGridContextMenu } from '/@/renderer/features/context-menu/hooks/use-handle-context-menu';
import {
PLAYLIST_CONTEXT_MENU_ITEMS,
ALBUM_CONTEXT_MENU_ITEMS,
@@ -112,6 +112,7 @@ export const GridCardControls = ({
itemType,
handlePlayQueueAdd,
handleFavorite,
resetInfiniteLoaderCache,
}: {
handleFavorite: (options: {
id: string[];
@@ -122,6 +123,7 @@ export const GridCardControls = ({
handlePlayQueueAdd?: (options: PlayQueueAddOptions) => void;
itemData: any;
itemType: LibraryItem;
resetInfiniteLoaderCache: () => void;
}) => {
const [isFavorite, setIsFavorite] = useState(itemData?.userFavorite);
const playButtonBehavior = usePlayButtonBehavior();
@@ -153,13 +155,14 @@ export const GridCardControls = ({
setIsFavorite(!isFavorite);
};
const handleContextMenu = useHandleGeneralContextMenu(
const handleContextMenu = useHandleGridContextMenu(
itemType,
itemType === LibraryItem.ALBUM
? ALBUM_CONTEXT_MENU_ITEMS
: itemType === LibraryItem.PLAYLIST
? PLAYLIST_CONTEXT_MENU_ITEMS
: ARTIST_CONTEXT_MENU_ITEMS,
resetInfiniteLoaderCache,
);
return (
@@ -17,8 +17,11 @@ export const GridCard = memo(({ data, index, style }: ListChildComponentProps) =
handleFavorite,
route,
display,
resetInfiniteLoaderCache,
} = data as GridCardData;
console.log('data', data);
const cards = [];
const startIndex = index * columnCount;
const stopIndex = Math.min(itemCount - 1, startIndex + columnCount - 1);
@@ -41,6 +44,7 @@ export const GridCard = memo(({ data, index, style }: ListChildComponentProps) =
handlePlayQueueAdd,
itemType,
playButtonBehavior,
resetInfiniteLoaderCache,
route,
}}
data={itemData[i]}
@@ -22,6 +22,7 @@ interface BaseGridCardProps {
handlePlayQueueAdd: (options: PlayQueueAddOptions) => void;
itemType: LibraryItem;
playButtonBehavior: Play;
resetInfiniteLoaderCache: () => void;
route: CardRoute;
};
data: any;
@@ -186,6 +187,7 @@ export const PosterCard = ({
handlePlayQueueAdd={controls.handlePlayQueueAdd}
itemData={data}
itemType={controls.itemType}
resetInfiniteLoaderCache={controls.resetInfiniteLoaderCache}
/>
</ImageContainer>
</LinkContainer>
@@ -22,6 +22,7 @@ const createItemData = memoize(
route,
handlePlayQueueAdd,
handleFavorite,
resetInfiniteLoaderCache,
) => ({
cardRows,
columnCount,
@@ -34,6 +35,7 @@ const createItemData = memoize(
itemHeight,
itemType,
itemWidth,
resetInfiniteLoaderCache,
route,
}),
);
@@ -59,6 +61,7 @@ export const VirtualGridWrapper = ({
onScroll,
height,
width,
resetInfiniteLoaderCache,
...rest
}: Omit<FixedSizeListProps, 'ref' | 'itemSize' | 'children' | 'height' | 'width'> & {
cardRows: CardRow<Album | AlbumArtist | Artist>[];
@@ -77,6 +80,7 @@ export const VirtualGridWrapper = ({
itemType: LibraryItem;
itemWidth: number;
refInstance: Ref<any>;
resetInfiniteLoaderCache: () => void;
route?: CardRoute;
rowCount: number;
width?: number;
@@ -94,6 +98,7 @@ export const VirtualGridWrapper = ({
route,
handlePlayQueueAdd,
handleFavorite,
resetInfiniteLoaderCache,
);
const memoizedOnScroll = createScrollHandler(onScroll);
@@ -166,6 +166,12 @@ export const VirtualInfiniteGrid = forwardRef(
infiniteLoaderRef(list);
listRef.current = list;
}}
resetInfiniteLoaderCache={() => {
if (loader.current) {
loader.current.resetloadMoreItemsCache(false);
setItemData([]);
}
}}
route={route}
rowCount={rowCount}
width={width}