Add checks for player type
This commit is contained in:
parent
ae5afe868e
commit
4353e81df3
6 changed files with 47 additions and 18 deletions
|
@ -13,7 +13,8 @@ import {
|
||||||
} from 'react-icons/ri';
|
} from 'react-icons/ri';
|
||||||
import { Song } from '/@/renderer/api/types';
|
import { Song } from '/@/renderer/api/types';
|
||||||
import { useQueueControls } from '/@/renderer/store';
|
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;
|
const mpvPlayer = isElectron() ? window.electron.mpvPlayer : null;
|
||||||
|
|
||||||
|
@ -26,13 +27,18 @@ export const PlayQueueListControls = ({ type, tableRef }: PlayQueueListOptionsPr
|
||||||
const { clearQueue, moveToBottomOfQueue, moveToTopOfQueue, shuffleQueue, removeFromQueue } =
|
const { clearQueue, moveToBottomOfQueue, moveToTopOfQueue, shuffleQueue, removeFromQueue } =
|
||||||
useQueueControls();
|
useQueueControls();
|
||||||
|
|
||||||
|
const playerType = usePlayerType();
|
||||||
|
|
||||||
const handleMoveToBottom = () => {
|
const handleMoveToBottom = () => {
|
||||||
const selectedRows = tableRef?.current?.grid.api.getSelectedRows();
|
const selectedRows = tableRef?.current?.grid.api.getSelectedRows();
|
||||||
const uniqueIds = selectedRows?.map((row) => row.uniqueId);
|
const uniqueIds = selectedRows?.map((row) => row.uniqueId);
|
||||||
if (!uniqueIds?.length) return;
|
if (!uniqueIds?.length) return;
|
||||||
|
|
||||||
const playerData = moveToBottomOfQueue(uniqueIds);
|
const playerData = moveToBottomOfQueue(uniqueIds);
|
||||||
mpvPlayer.setQueueNext(playerData);
|
|
||||||
|
if (playerType === PlaybackType.LOCAL) {
|
||||||
|
mpvPlayer.setQueueNext(playerData);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleMoveToTop = () => {
|
const handleMoveToTop = () => {
|
||||||
|
@ -41,7 +47,10 @@ export const PlayQueueListControls = ({ type, tableRef }: PlayQueueListOptionsPr
|
||||||
if (!uniqueIds?.length) return;
|
if (!uniqueIds?.length) return;
|
||||||
|
|
||||||
const playerData = moveToTopOfQueue(uniqueIds);
|
const playerData = moveToTopOfQueue(uniqueIds);
|
||||||
mpvPlayer.setQueueNext(playerData);
|
|
||||||
|
if (playerType === PlaybackType.LOCAL) {
|
||||||
|
mpvPlayer.setQueueNext(playerData);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleRemoveSelected = () => {
|
const handleRemoveSelected = () => {
|
||||||
|
@ -50,24 +59,34 @@ export const PlayQueueListControls = ({ type, tableRef }: PlayQueueListOptionsPr
|
||||||
if (!uniqueIds?.length) return;
|
if (!uniqueIds?.length) return;
|
||||||
|
|
||||||
const playerData = removeFromQueue(uniqueIds);
|
const playerData = removeFromQueue(uniqueIds);
|
||||||
mpvPlayer.setQueueNext(playerData);
|
|
||||||
|
if (playerType === PlaybackType.LOCAL) {
|
||||||
|
mpvPlayer.setQueueNext(playerData);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleClearQueue = () => {
|
const handleClearQueue = () => {
|
||||||
const playerData = clearQueue();
|
const playerData = clearQueue();
|
||||||
mpvPlayer.setQueue(playerData);
|
|
||||||
mpvPlayer.stop();
|
if (playerType === PlaybackType.LOCAL) {
|
||||||
|
mpvPlayer.setQueue(playerData);
|
||||||
|
mpvPlayer.stop();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleShuffleQueue = () => {
|
const handleShuffleQueue = () => {
|
||||||
const playerData = shuffleQueue();
|
const playerData = shuffleQueue();
|
||||||
mpvPlayer.setQueueNext(playerData);
|
|
||||||
|
if (playerType === PlaybackType.LOCAL) {
|
||||||
|
mpvPlayer.setQueueNext(playerData);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Group
|
<Group
|
||||||
position="apart"
|
position="apart"
|
||||||
px="1rem"
|
px="1rem"
|
||||||
|
py="1rem"
|
||||||
sx={{ alignItems: 'center' }}
|
sx={{ alignItems: 'center' }}
|
||||||
>
|
>
|
||||||
<Group>
|
<Group>
|
||||||
|
|
|
@ -22,6 +22,7 @@ import {
|
||||||
useQueueControls,
|
useQueueControls,
|
||||||
} from '/@/renderer/store';
|
} from '/@/renderer/store';
|
||||||
import {
|
import {
|
||||||
|
usePlayerType,
|
||||||
useSettingsStore,
|
useSettingsStore,
|
||||||
useSettingsStoreActions,
|
useSettingsStoreActions,
|
||||||
useTableSettings,
|
useTableSettings,
|
||||||
|
@ -31,7 +32,7 @@ import isElectron from 'is-electron';
|
||||||
import { ErrorBoundary } from 'react-error-boundary';
|
import { ErrorBoundary } from 'react-error-boundary';
|
||||||
import { VirtualTable } from '/@/renderer/components/virtual-table';
|
import { VirtualTable } from '/@/renderer/components/virtual-table';
|
||||||
import { ErrorFallback } from '/@/renderer/features/action-required';
|
import { ErrorFallback } from '/@/renderer/features/action-required';
|
||||||
import { TableType } from '/@/renderer/types';
|
import { PlaybackType, TableType } from '/@/renderer/types';
|
||||||
import { QueueSong } from '/@/renderer/api/types';
|
import { QueueSong } from '/@/renderer/api/types';
|
||||||
|
|
||||||
const mpvPlayer = isElectron() ? window.electron.mpvPlayer : null;
|
const mpvPlayer = isElectron() ? window.electron.mpvPlayer : null;
|
||||||
|
@ -51,6 +52,7 @@ export const PlayQueue = forwardRef(({ type }: QueueProps, ref: Ref<any>) => {
|
||||||
const { setAppStore } = useAppStoreActions();
|
const { setAppStore } = useAppStoreActions();
|
||||||
const tableConfig = useTableSettings(type);
|
const tableConfig = useTableSettings(type);
|
||||||
const [gridApi, setGridApi] = useState<AgGridReactType | undefined>();
|
const [gridApi, setGridApi] = useState<AgGridReactType | undefined>();
|
||||||
|
const playerType = usePlayerType();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (tableRef.current) {
|
if (tableRef.current) {
|
||||||
|
@ -73,9 +75,12 @@ export const PlayQueue = forwardRef(({ type }: QueueProps, ref: Ref<any>) => {
|
||||||
};
|
};
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const handlePlayByRowClick = (e: CellDoubleClickedEvent) => {
|
const handleDoubleClick = (e: CellDoubleClickedEvent) => {
|
||||||
const playerData = setCurrentTrack(e.data.uniqueId);
|
const playerData = setCurrentTrack(e.data.uniqueId);
|
||||||
mpvPlayer.setQueue(playerData);
|
|
||||||
|
if (playerType === PlaybackType.LOCAL) {
|
||||||
|
mpvPlayer.setQueue(playerData);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleDragStart = () => {
|
const handleDragStart = () => {
|
||||||
|
@ -92,7 +97,10 @@ export const PlayQueue = forwardRef(({ type }: QueueProps, ref: Ref<any>) => {
|
||||||
.filter((e) => e !== undefined);
|
.filter((e) => e !== undefined);
|
||||||
|
|
||||||
const playerData = reorderQueue(selectedUniqueIds as string[], e.overNode?.data?.uniqueId);
|
const playerData = reorderQueue(selectedUniqueIds as string[], e.overNode?.data?.uniqueId);
|
||||||
mpvPlayer.setQueueNext(playerData);
|
|
||||||
|
if (playerType === PlaybackType.LOCAL) {
|
||||||
|
mpvPlayer.setQueueNext(playerData);
|
||||||
|
}
|
||||||
|
|
||||||
if (type === 'sideDrawerQueue') {
|
if (type === 'sideDrawerQueue') {
|
||||||
setAppStore({ isReorderingQueue: false });
|
setAppStore({ isReorderingQueue: false });
|
||||||
|
@ -223,7 +231,7 @@ export const PlayQueue = forwardRef(({ type }: QueueProps, ref: Ref<any>) => {
|
||||||
rowData={queue}
|
rowData={queue}
|
||||||
rowHeight={tableConfig.rowHeight || 40}
|
rowHeight={tableConfig.rowHeight || 40}
|
||||||
rowSelection="multiple"
|
rowSelection="multiple"
|
||||||
onCellDoubleClicked={handlePlayByRowClick}
|
onCellDoubleClicked={handleDoubleClick}
|
||||||
onColumnMoved={handleColumnChange}
|
onColumnMoved={handleColumnChange}
|
||||||
onColumnResized={handleColumnChange}
|
onColumnResized={handleColumnChange}
|
||||||
onDragStarted={handleDragStart}
|
onDragStarted={handleDragStart}
|
||||||
|
|
|
@ -26,7 +26,7 @@ import {
|
||||||
useShuffleStatus,
|
useShuffleStatus,
|
||||||
useCurrentTime,
|
useCurrentTime,
|
||||||
} from '/@/renderer/store';
|
} 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';
|
import { PlayerStatus, PlaybackType, PlayerShuffle, PlayerRepeat } from '/@/renderer/types';
|
||||||
|
|
||||||
interface CenterControlsProps {
|
interface CenterControlsProps {
|
||||||
|
@ -69,7 +69,7 @@ export const CenterControls = ({ playersRef }: CenterControlsProps) => {
|
||||||
const currentSong = useCurrentSong();
|
const currentSong = useCurrentSong();
|
||||||
const songDuration = currentSong?.duration;
|
const songDuration = currentSong?.duration;
|
||||||
const skip = useSettingsStore((state) => state.player.skipButtons);
|
const skip = useSettingsStore((state) => state.player.skipButtons);
|
||||||
const playerType = useSettingsStore((state) => state.player.type);
|
const playerType = usePlayerType();
|
||||||
const player1 = playersRef?.current?.player1;
|
const player1 = playersRef?.current?.player1;
|
||||||
const player2 = playersRef?.current?.player2;
|
const player2 = playersRef?.current?.player2;
|
||||||
const status = useCurrentStatus();
|
const status = useCurrentStatus();
|
||||||
|
|
|
@ -11,7 +11,7 @@ import {
|
||||||
useSetCurrentTime,
|
useSetCurrentTime,
|
||||||
useShuffleStatus,
|
useShuffleStatus,
|
||||||
} from '/@/renderer/store';
|
} 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 mpvPlayer = isElectron() ? window.electron.mpvPlayer : null;
|
||||||
const mpvPlayerListener = isElectron() ? window.electron.mpvPlayerListener : null;
|
const mpvPlayerListener = isElectron() ? window.electron.mpvPlayerListener : null;
|
||||||
|
@ -29,7 +29,7 @@ export const useCenterControls = (args: { playersRef: any }) => {
|
||||||
const playerStatus = useCurrentStatus();
|
const playerStatus = useCurrentStatus();
|
||||||
const repeatStatus = useRepeatStatus();
|
const repeatStatus = useRepeatStatus();
|
||||||
const shuffleStatus = useShuffleStatus();
|
const shuffleStatus = useShuffleStatus();
|
||||||
const playerType = useSettingsStore((state) => state.player.type);
|
const playerType = usePlayerType();
|
||||||
const player1Ref = playersRef?.current?.player1;
|
const player1Ref = playersRef?.current?.player1;
|
||||||
const player2Ref = playersRef?.current?.player2;
|
const player2Ref = playersRef?.current?.player2;
|
||||||
const currentPlayerRef = currentPlayer === 1 ? player1Ref : player2Ref;
|
const currentPlayerRef = currentPlayer === 1 ? player1Ref : player2Ref;
|
||||||
|
|
|
@ -6,7 +6,7 @@ import { ndNormalize } from '/@/renderer/api/navidrome.api';
|
||||||
import { NDSong } from '/@/renderer/api/navidrome.types';
|
import { NDSong } from '/@/renderer/api/navidrome.types';
|
||||||
import { queryKeys } from '/@/renderer/api/query-keys';
|
import { queryKeys } from '/@/renderer/api/query-keys';
|
||||||
import { useAuthStore, usePlayerStore } from '/@/renderer/store';
|
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 { PlayQueueAddOptions, LibraryItem, Play, PlaybackType } from '/@/renderer/types';
|
||||||
import { toast } from '/@/renderer/components/toast';
|
import { toast } from '/@/renderer/components/toast';
|
||||||
import isElectron from 'is-electron';
|
import isElectron from 'is-electron';
|
||||||
|
@ -15,7 +15,7 @@ const mpvPlayer = isElectron() ? window.electron.mpvPlayer : null;
|
||||||
|
|
||||||
export const useHandlePlayQueueAdd = () => {
|
export const useHandlePlayQueueAdd = () => {
|
||||||
const queryClient = useQueryClient();
|
const queryClient = useQueryClient();
|
||||||
const playerType = useSettingsStore.getState().player.type;
|
const playerType = usePlayerType();
|
||||||
const deviceId = useAuthStore.getState().deviceId;
|
const deviceId = useAuthStore.getState().deviceId;
|
||||||
const server = useAuthStore.getState().currentServer;
|
const server = useAuthStore.getState().currentServer;
|
||||||
|
|
||||||
|
|
|
@ -233,3 +233,5 @@ export const useTableSettings = (type: TableType) =>
|
||||||
useSettingsStore((state) => state.tables[type]);
|
useSettingsStore((state) => state.tables[type]);
|
||||||
|
|
||||||
export const useGeneralSettings = () => useSettingsStore((state) => state.general);
|
export const useGeneralSettings = () => useSettingsStore((state) => state.general);
|
||||||
|
|
||||||
|
export const usePlayerType = () => useSettingsStore((state) => state.player.type);
|
||||||
|
|
Reference in a new issue