mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-09 20:29:36 +02:00
fix playlist refresh
This commit is contained in:
@@ -1,8 +1,9 @@
|
|||||||
import { useSuspenseQuery } from '@tanstack/react-query';
|
import { useQueryClient, useSuspenseQuery } from '@tanstack/react-query';
|
||||||
import { lazy, Suspense, useEffect } from 'react';
|
import { lazy, Suspense, useEffect } from 'react';
|
||||||
import { useParams } from 'react-router';
|
import { useParams } from 'react-router';
|
||||||
|
|
||||||
import { useListContext } from '/@/renderer/context/list-context';
|
import { useListContext } from '/@/renderer/context/list-context';
|
||||||
|
import { eventEmitter } from '/@/renderer/events/event-emitter';
|
||||||
import { playlistsQueries } from '/@/renderer/features/playlists/api/playlists-api';
|
import { playlistsQueries } from '/@/renderer/features/playlists/api/playlists-api';
|
||||||
import { ItemListSettings, useCurrentServer, useListSettings } from '/@/renderer/store';
|
import { ItemListSettings, useCurrentServer, useListSettings } from '/@/renderer/store';
|
||||||
import { Spinner } from '/@/shared/components/spinner/spinner';
|
import { Spinner } from '/@/shared/components/spinner/spinner';
|
||||||
@@ -24,6 +25,7 @@ export const PlaylistDetailSongListContent = () => {
|
|||||||
const { playlistId } = useParams() as { playlistId: string };
|
const { playlistId } = useParams() as { playlistId: string };
|
||||||
const server = useCurrentServer();
|
const server = useCurrentServer();
|
||||||
const { setItemCount } = useListContext();
|
const { setItemCount } = useListContext();
|
||||||
|
const queryClient = useQueryClient();
|
||||||
|
|
||||||
const playlistSongsQuery = useSuspenseQuery(
|
const playlistSongsQuery = useSuspenseQuery(
|
||||||
playlistsQueries.songList({
|
playlistsQueries.songList({
|
||||||
@@ -43,6 +45,30 @@ export const PlaylistDetailSongListContent = () => {
|
|||||||
}
|
}
|
||||||
}, [playlistSongsQuery.data?.totalRecordCount, setItemCount]);
|
}, [playlistSongsQuery.data?.totalRecordCount, setItemCount]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const handleRefresh = async (payload: { key: string }) => {
|
||||||
|
if (payload.key !== ItemListKey.PLAYLIST_SONG) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const queryKey = playlistsQueries.songList({
|
||||||
|
query: {
|
||||||
|
id: playlistId,
|
||||||
|
},
|
||||||
|
serverId: server?.id,
|
||||||
|
}).queryKey;
|
||||||
|
|
||||||
|
await queryClient.invalidateQueries({ queryKey });
|
||||||
|
await queryClient.refetchQueries({ queryKey });
|
||||||
|
};
|
||||||
|
|
||||||
|
eventEmitter.on('ITEM_LIST_REFRESH', handleRefresh);
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
eventEmitter.off('ITEM_LIST_REFRESH', handleRefresh);
|
||||||
|
};
|
||||||
|
}, [playlistId, queryClient, server.id]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Suspense fallback={<Spinner container />}>
|
<Suspense fallback={<Spinner container />}>
|
||||||
<PlaylistDetailSongListView
|
<PlaylistDetailSongListView
|
||||||
|
|||||||
Reference in New Issue
Block a user