mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-16 21:50:35 +02:00
optimize item list controls
This commit is contained in:
@@ -40,6 +40,13 @@ export const useDefaultItemListControls = (args?: UseDefaultItemListControlsArgs
|
|||||||
const setFavorite = useSetFavorite();
|
const setFavorite = useSetFavorite();
|
||||||
const setRating = useSetRating();
|
const setRating = useSetRating();
|
||||||
|
|
||||||
|
const playerRef = useRef(player);
|
||||||
|
const setFavoriteRef = useRef(setFavorite);
|
||||||
|
const setRatingRef = useRef(setRating);
|
||||||
|
playerRef.current = player;
|
||||||
|
setFavoriteRef.current = setFavorite;
|
||||||
|
setRatingRef.current = setRating;
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
navigateRef.current = navigate;
|
navigateRef.current = navigate;
|
||||||
}, [navigate]);
|
}, [navigate]);
|
||||||
@@ -266,14 +273,14 @@ export const useDefaultItemListControls = (args?: UseDefaultItemListControlsArgs
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
player.addToQueueByData(songsToAdd, playType, item.id);
|
playerRef.current.addToQueueByData(songsToAdd, playType, item.id);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (itemType === LibraryItem.QUEUE_SONG) {
|
if (itemType === LibraryItem.QUEUE_SONG) {
|
||||||
const queueSong = item as QueueSong;
|
const queueSong = item as QueueSong;
|
||||||
if (queueSong._uniqueId) {
|
if (queueSong._uniqueId) {
|
||||||
player.mediaPlay(queueSong._uniqueId);
|
playerRef.current.mediaPlay(queueSong._uniqueId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -316,7 +323,7 @@ export const useDefaultItemListControls = (args?: UseDefaultItemListControlsArgs
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
setFavorite(item._serverId, [item.id], apiItemType, favorite);
|
setFavoriteRef.current(item._serverId, [item.id], apiItemType, favorite);
|
||||||
},
|
},
|
||||||
|
|
||||||
onMore: ({ event, internalState, item, itemType }: DefaultItemControlProps) => {
|
onMore: ({ event, internalState, item, itemType }: DefaultItemControlProps) => {
|
||||||
@@ -394,7 +401,7 @@ export const useDefaultItemListControls = (args?: UseDefaultItemListControlsArgs
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
player.addToQueueByFetch(item._serverId, [item.id], itemType, playType);
|
playerRef.current.addToQueueByFetch(item._serverId, [item.id], itemType, playType);
|
||||||
},
|
},
|
||||||
|
|
||||||
onRating: ({
|
onRating: ({
|
||||||
@@ -420,20 +427,12 @@ export const useDefaultItemListControls = (args?: UseDefaultItemListControlsArgs
|
|||||||
newRating = 0;
|
newRating = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
setRating(item._serverId, [item.id], apiItemType, newRating);
|
setRatingRef.current(item._serverId, [item.id], apiItemType, newRating);
|
||||||
},
|
},
|
||||||
|
|
||||||
...overrides,
|
...overrides,
|
||||||
};
|
};
|
||||||
}, [
|
}, [enableMultiSelect, overrides, onColumnReordered, onColumnResized]);
|
||||||
enableMultiSelect,
|
|
||||||
overrides,
|
|
||||||
onColumnReordered,
|
|
||||||
onColumnResized,
|
|
||||||
player,
|
|
||||||
setFavorite,
|
|
||||||
setRating,
|
|
||||||
]);
|
|
||||||
|
|
||||||
return controls;
|
return controls;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user