From 4353e81df3668515b5e551129554ca83f803e6e8 Mon Sep 17 00:00:00 2001 From: jeffvli Date: Sun, 25 Dec 2022 01:55:00 -0800 Subject: [PATCH] Add checks for player type --- .../components/play-queue-list-controls.tsx | 33 +++++++++++++++---- .../now-playing/components/play-queue.tsx | 18 +++++++--- .../player/components/center-controls.tsx | 4 +-- .../player/hooks/use-center-controls.ts | 4 +-- .../player/hooks/use-handle-playqueue-add.ts | 4 +-- src/renderer/store/settings.store.ts | 2 ++ 6 files changed, 47 insertions(+), 18 deletions(-) diff --git a/src/renderer/features/now-playing/components/play-queue-list-controls.tsx b/src/renderer/features/now-playing/components/play-queue-list-controls.tsx index 18228254..cfd84362 100644 --- a/src/renderer/features/now-playing/components/play-queue-list-controls.tsx +++ b/src/renderer/features/now-playing/components/play-queue-list-controls.tsx @@ -13,7 +13,8 @@ import { } from 'react-icons/ri'; import { Song } from '/@/renderer/api/types'; import { useQueueControls } from '/@/renderer/store'; -import { TableType } from '/@/renderer/types'; +import { PlaybackType, TableType } from '/@/renderer/types'; +import { usePlayerType } from '/@/renderer/store/settings.store'; const mpvPlayer = isElectron() ? window.electron.mpvPlayer : null; @@ -26,13 +27,18 @@ export const PlayQueueListControls = ({ type, tableRef }: PlayQueueListOptionsPr const { clearQueue, moveToBottomOfQueue, moveToTopOfQueue, shuffleQueue, removeFromQueue } = useQueueControls(); + const playerType = usePlayerType(); + const handleMoveToBottom = () => { const selectedRows = tableRef?.current?.grid.api.getSelectedRows(); const uniqueIds = selectedRows?.map((row) => row.uniqueId); if (!uniqueIds?.length) return; const playerData = moveToBottomOfQueue(uniqueIds); - mpvPlayer.setQueueNext(playerData); + + if (playerType === PlaybackType.LOCAL) { + mpvPlayer.setQueueNext(playerData); + } }; const handleMoveToTop = () => { @@ -41,7 +47,10 @@ export const PlayQueueListControls = ({ type, tableRef }: PlayQueueListOptionsPr if (!uniqueIds?.length) return; const playerData = moveToTopOfQueue(uniqueIds); - mpvPlayer.setQueueNext(playerData); + + if (playerType === PlaybackType.LOCAL) { + mpvPlayer.setQueueNext(playerData); + } }; const handleRemoveSelected = () => { @@ -50,24 +59,34 @@ export const PlayQueueListControls = ({ type, tableRef }: PlayQueueListOptionsPr if (!uniqueIds?.length) return; const playerData = removeFromQueue(uniqueIds); - mpvPlayer.setQueueNext(playerData); + + if (playerType === PlaybackType.LOCAL) { + mpvPlayer.setQueueNext(playerData); + } }; const handleClearQueue = () => { const playerData = clearQueue(); - mpvPlayer.setQueue(playerData); - mpvPlayer.stop(); + + if (playerType === PlaybackType.LOCAL) { + mpvPlayer.setQueue(playerData); + mpvPlayer.stop(); + } }; const handleShuffleQueue = () => { const playerData = shuffleQueue(); - mpvPlayer.setQueueNext(playerData); + + if (playerType === PlaybackType.LOCAL) { + mpvPlayer.setQueueNext(playerData); + } }; return ( diff --git a/src/renderer/features/now-playing/components/play-queue.tsx b/src/renderer/features/now-playing/components/play-queue.tsx index 6e669405..4285daf4 100644 --- a/src/renderer/features/now-playing/components/play-queue.tsx +++ b/src/renderer/features/now-playing/components/play-queue.tsx @@ -22,6 +22,7 @@ import { useQueueControls, } from '/@/renderer/store'; import { + usePlayerType, useSettingsStore, useSettingsStoreActions, useTableSettings, @@ -31,7 +32,7 @@ import isElectron from 'is-electron'; import { ErrorBoundary } from 'react-error-boundary'; import { VirtualTable } from '/@/renderer/components/virtual-table'; import { ErrorFallback } from '/@/renderer/features/action-required'; -import { TableType } from '/@/renderer/types'; +import { PlaybackType, TableType } from '/@/renderer/types'; import { QueueSong } from '/@/renderer/api/types'; const mpvPlayer = isElectron() ? window.electron.mpvPlayer : null; @@ -51,6 +52,7 @@ export const PlayQueue = forwardRef(({ type }: QueueProps, ref: Ref) => { const { setAppStore } = useAppStoreActions(); const tableConfig = useTableSettings(type); const [gridApi, setGridApi] = useState(); + const playerType = usePlayerType(); useEffect(() => { if (tableRef.current) { @@ -73,9 +75,12 @@ export const PlayQueue = forwardRef(({ type }: QueueProps, ref: Ref) => { }; }, []); - const handlePlayByRowClick = (e: CellDoubleClickedEvent) => { + const handleDoubleClick = (e: CellDoubleClickedEvent) => { const playerData = setCurrentTrack(e.data.uniqueId); - mpvPlayer.setQueue(playerData); + + if (playerType === PlaybackType.LOCAL) { + mpvPlayer.setQueue(playerData); + } }; const handleDragStart = () => { @@ -92,7 +97,10 @@ export const PlayQueue = forwardRef(({ type }: QueueProps, ref: Ref) => { .filter((e) => e !== undefined); const playerData = reorderQueue(selectedUniqueIds as string[], e.overNode?.data?.uniqueId); - mpvPlayer.setQueueNext(playerData); + + if (playerType === PlaybackType.LOCAL) { + mpvPlayer.setQueueNext(playerData); + } if (type === 'sideDrawerQueue') { setAppStore({ isReorderingQueue: false }); @@ -223,7 +231,7 @@ export const PlayQueue = forwardRef(({ type }: QueueProps, ref: Ref) => { rowData={queue} rowHeight={tableConfig.rowHeight || 40} rowSelection="multiple" - onCellDoubleClicked={handlePlayByRowClick} + onCellDoubleClicked={handleDoubleClick} onColumnMoved={handleColumnChange} onColumnResized={handleColumnChange} onDragStarted={handleDragStart} diff --git a/src/renderer/features/player/components/center-controls.tsx b/src/renderer/features/player/components/center-controls.tsx index 64486d04..6b065eee 100644 --- a/src/renderer/features/player/components/center-controls.tsx +++ b/src/renderer/features/player/components/center-controls.tsx @@ -26,7 +26,7 @@ import { useShuffleStatus, useCurrentTime, } from '/@/renderer/store'; -import { useSettingsStore } from '/@/renderer/store/settings.store'; +import { usePlayerType, useSettingsStore } from '/@/renderer/store/settings.store'; import { PlayerStatus, PlaybackType, PlayerShuffle, PlayerRepeat } from '/@/renderer/types'; interface CenterControlsProps { @@ -69,7 +69,7 @@ export const CenterControls = ({ playersRef }: CenterControlsProps) => { const currentSong = useCurrentSong(); const songDuration = currentSong?.duration; const skip = useSettingsStore((state) => state.player.skipButtons); - const playerType = useSettingsStore((state) => state.player.type); + const playerType = usePlayerType(); const player1 = playersRef?.current?.player1; const player2 = playersRef?.current?.player2; const status = useCurrentStatus(); diff --git a/src/renderer/features/player/hooks/use-center-controls.ts b/src/renderer/features/player/hooks/use-center-controls.ts index ae2453fb..4a1e79d1 100644 --- a/src/renderer/features/player/hooks/use-center-controls.ts +++ b/src/renderer/features/player/hooks/use-center-controls.ts @@ -11,7 +11,7 @@ import { useSetCurrentTime, useShuffleStatus, } from '/@/renderer/store'; -import { useSettingsStore } from '/@/renderer/store/settings.store'; +import { usePlayerType, useSettingsStore } from '/@/renderer/store/settings.store'; const mpvPlayer = isElectron() ? window.electron.mpvPlayer : null; const mpvPlayerListener = isElectron() ? window.electron.mpvPlayerListener : null; @@ -29,7 +29,7 @@ export const useCenterControls = (args: { playersRef: any }) => { const playerStatus = useCurrentStatus(); const repeatStatus = useRepeatStatus(); const shuffleStatus = useShuffleStatus(); - const playerType = useSettingsStore((state) => state.player.type); + const playerType = usePlayerType(); const player1Ref = playersRef?.current?.player1; const player2Ref = playersRef?.current?.player2; const currentPlayerRef = currentPlayer === 1 ? player1Ref : player2Ref; diff --git a/src/renderer/features/player/hooks/use-handle-playqueue-add.ts b/src/renderer/features/player/hooks/use-handle-playqueue-add.ts index cf322f74..4c59915d 100644 --- a/src/renderer/features/player/hooks/use-handle-playqueue-add.ts +++ b/src/renderer/features/player/hooks/use-handle-playqueue-add.ts @@ -6,7 +6,7 @@ import { ndNormalize } from '/@/renderer/api/navidrome.api'; import { NDSong } from '/@/renderer/api/navidrome.types'; import { queryKeys } from '/@/renderer/api/query-keys'; import { useAuthStore, usePlayerStore } from '/@/renderer/store'; -import { useSettingsStore } from '/@/renderer/store/settings.store'; +import { usePlayerType } from '/@/renderer/store/settings.store'; import { PlayQueueAddOptions, LibraryItem, Play, PlaybackType } from '/@/renderer/types'; import { toast } from '/@/renderer/components/toast'; import isElectron from 'is-electron'; @@ -15,7 +15,7 @@ const mpvPlayer = isElectron() ? window.electron.mpvPlayer : null; export const useHandlePlayQueueAdd = () => { const queryClient = useQueryClient(); - const playerType = useSettingsStore.getState().player.type; + const playerType = usePlayerType(); const deviceId = useAuthStore.getState().deviceId; const server = useAuthStore.getState().currentServer; diff --git a/src/renderer/store/settings.store.ts b/src/renderer/store/settings.store.ts index 4ebcaad8..896925b1 100644 --- a/src/renderer/store/settings.store.ts +++ b/src/renderer/store/settings.store.ts @@ -233,3 +233,5 @@ export const useTableSettings = (type: TableType) => useSettingsStore((state) => state.tables[type]); export const useGeneralSettings = () => useSettingsStore((state) => state.general); + +export const usePlayerType = () => useSettingsStore((state) => state.player.type);