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

View file

@ -97,6 +97,7 @@ export const ContextMenuProvider = ({ children }: ContextMenuProviderProps) => {
data: [],
dataNodes: [],
menuItems: [],
resetGridCache: undefined,
tableApi: undefined,
type: LibraryItem.SONG,
xPos: 0,
@ -106,7 +107,8 @@ export const ContextMenuProvider = ({ children }: ContextMenuProviderProps) => {
const handlePlayQueueAdd = usePlayQueueAdd();
const openContextMenu = (args: OpenContextMenuProps) => {
const { xPos, yPos, menuItems, data, type, tableApi, dataNodes, context } = args;
const { xPos, yPos, menuItems, data, type, tableApi, dataNodes, context, resetGridCache } =
args;
const serverType = data[0]?.serverType || useAuthStore.getState().currentServer?.type;
let validMenuItems = menuItems;
@ -133,6 +135,7 @@ export const ContextMenuProvider = ({ children }: ContextMenuProviderProps) => {
data,
dataNodes,
menuItems: validMenuItems,
resetGridCache,
tableApi,
type,
xPos: calculatedXPos,
@ -214,12 +217,16 @@ export const ContextMenuProvider = ({ children }: ContextMenuProviderProps) => {
toast.success({
message: `Playlist has been deleted`,
});
ctx.tableApi?.refreshInfiniteCache();
ctx.resetGridCache?.();
},
},
);
}
closeAllModals();
}, [ctx.data, deletePlaylistMutation]);
}, [ctx, deletePlaylistMutation]);
const openDeletePlaylistModal = useCallback(() => {
openModal({

View file

@ -7,6 +7,7 @@ export type OpenContextMenuProps = {
data: any[];
dataNodes?: RowNode[];
menuItems: SetContextMenuItems;
resetGridCache?: () => void;
tableApi?: GridOptions['api'];
type: LibraryItem;
xPos: number;

View file

@ -72,3 +72,32 @@ export const useHandleGeneralContextMenu = (
return handleContextMenu;
};
export const useHandleGridContextMenu = (
itemType: LibraryItem,
contextMenuItems: SetContextMenuItems,
resetGridCache: () => void,
context?: any,
) => {
const handleContextMenu = (
e: any,
data: Song[] | QueueSong[] | AlbumArtist[] | Artist[] | Album[],
) => {
if (!e) return;
const clickEvent = e as MouseEvent;
clickEvent.preventDefault();
openContextMenu({
context,
data,
dataNodes: undefined,
menuItems: contextMenuItems,
resetGridCache,
type: itemType,
xPos: clickEvent.clientX + 15,
yPos: clickEvent.clientY + 5,
});
};
return handleContextMenu;
};