diff --git a/src/renderer/features/playlists/components/playlist-detail-song-list-content.tsx b/src/renderer/features/playlists/components/playlist-detail-song-list-content.tsx
index e8a6162da..72192cd47 100644
--- a/src/renderer/features/playlists/components/playlist-detail-song-list-content.tsx
+++ b/src/renderer/features/playlists/components/playlist-detail-song-list-content.tsx
@@ -1,6 +1,9 @@
-import { lazy, Suspense } from 'react';
+import { useSuspenseQuery } from '@tanstack/react-query';
+import { lazy, Suspense, useEffect } from 'react';
import { useParams } from 'react-router';
+import { useListContext } from '/@/renderer/context/list-context';
+import { playlistsQueries } from '/@/renderer/features/playlists/api/playlists-api';
import { ItemListSettings, useCurrentServer, useListSettings } from '/@/renderer/store';
import { Spinner } from '/@/shared/components/spinner/spinner';
import { PlaylistSongListQuery } from '/@/shared/types/domain-types';
@@ -19,10 +22,31 @@ export const PlaylistDetailSongListContent = () => {
ItemListKey.PLAYLIST_SONG,
);
const { playlistId } = useParams() as { playlistId: string };
+ const server = useCurrentServer();
+ const { setItemCount } = useListContext();
+
+ const playlistSongsQuery = useSuspenseQuery(
+ playlistsQueries.songList({
+ query: {
+ id: playlistId,
+ },
+ serverId: server?.id,
+ }),
+ );
+
+ useEffect(() => {
+ if (
+ playlistSongsQuery.data?.totalRecordCount !== undefined &&
+ playlistSongsQuery.data.totalRecordCount !== null
+ ) {
+ setItemCount?.(playlistSongsQuery.data.totalRecordCount);
+ }
+ }, [playlistSongsQuery.data?.totalRecordCount, setItemCount]);
return (
}>
{
export type OverridePlaylistSongListQuery = Omit, 'id'>;
export const PlaylistDetailSongListView = ({
+ data,
display,
playlistId,
table,
}: ItemListSettings & {
+ data: any;
playlistId: string;
}) => {
const server = useCurrentServer();
@@ -51,6 +77,7 @@ export const PlaylistDetailSongListView = ({
, 'query'> {
+ data: any;
playlistId: string;
}
@@ -27,6 +26,7 @@ export const PlaylistDetailSongListTable = forwardRef {
- const playlistSongs = useQuery(
- playlistsQueries.songList({
- query: { id: playlistId },
- serverId: serverId,
- }),
- );
const { handleOnScrollEnd, scrollOffset } = useItemListScrollPersist({
enabled: saveScrollOffset,
@@ -62,7 +56,7 @@ export const PlaylistDetailSongListTable = forwardRef {
- let items = playlistSongs.data?.items || [];
+ let items = data?.items || [];
if (searchTerm) {
if (searchTerm) {
@@ -73,7 +67,7 @@ export const PlaylistDetailSongListTable = forwardRef {
const { t } = useTranslation();
const navigate = useNavigate();
+ const location = useLocation();
const { playlistId } = useParams() as { playlistId: string };
const server = useCurrentServer();
- const detailQuery = useQuery(
- playlistsQueries.detail({ query: { id: playlistId }, serverId: server?.id }),
- );
+ const detailQuery = useQuery({
+ ...playlistsQueries.detail({ query: { id: playlistId }, serverId: server?.id }),
+ initialData: location.state?.item,
+ staleTime: 0,
+ });
const createPlaylistMutation = useCreatePlaylist({});
const deletePlaylistMutation = useDeletePlaylist({});
@@ -410,15 +414,6 @@ const PlaylistDetailSongListRoute = () => {
setIsQueryBuilderExpanded(true);
};
- const playlistSongs = useQuery(
- playlistsQueries.songList({
- query: {
- id: playlistId,
- },
- serverId: server?.id,
- }),
- );
-
const [itemCount, setItemCount] = useState(undefined);
const providerValue = useMemo(() => {
@@ -431,15 +426,6 @@ const PlaylistDetailSongListRoute = () => {
};
}, [playlistId, itemCount]);
- useEffect(() => {
- if (
- playlistSongs.data?.totalRecordCount !== undefined &&
- playlistSongs.data.totalRecordCount !== null
- ) {
- setItemCount(playlistSongs.data.totalRecordCount);
- }
- }, [playlistSongs.data?.totalRecordCount]);
-
return (
@@ -466,7 +452,9 @@ const PlaylistDetailSongListRoute = () => {
queryBuilderRef={queryBuilderRef}
/>
)}
-
+ }>
+
+
);
diff --git a/src/renderer/features/sidebar/components/sidebar-playlist-list.tsx b/src/renderer/features/sidebar/components/sidebar-playlist-list.tsx
index 8defb85d7..07e88b4c3 100644
--- a/src/renderer/features/sidebar/components/sidebar-playlist-list.tsx
+++ b/src/renderer/features/sidebar/components/sidebar-playlist-list.tsx
@@ -41,7 +41,10 @@ interface PlaylistRowButtonProps extends Omit {
- const url = generatePath(AppRoute.PLAYLISTS_DETAIL_SONGS, { playlistId: to });
+ const url = {
+ pathname: generatePath(AppRoute.PLAYLISTS_DETAIL_SONGS, { playlistId: to }),
+ state: { item },
+ };
const { t } = useTranslation();
const [isHovered, setIsHovered] = useState(false);