mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-14 12:30:06 +02:00
temporarily remove old player implementations to prevent broken app
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1,226 +1,226 @@
|
||||
import { useQueryClient } from '@tanstack/react-query';
|
||||
import isElectron from 'is-electron';
|
||||
import { nanoid } from 'nanoid/non-secure';
|
||||
import { useCallback, useRef } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
// import { useQueryClient } from '@tanstack/react-query';
|
||||
// import isElectron from 'is-electron';
|
||||
// import { nanoid } from 'nanoid/non-secure';
|
||||
// import { useCallback, useRef } from 'react';
|
||||
// import { useTranslation } from 'react-i18next';
|
||||
|
||||
import { queryKeys } from '/@/renderer/api/query-keys';
|
||||
import { PlayersRef } from '/@/renderer/features/player/ref/players-ref';
|
||||
import { updateSong } from '/@/renderer/features/player/update-remote-song';
|
||||
import {
|
||||
getAlbumArtistSongsById,
|
||||
getAlbumSongsById,
|
||||
getArtistSongsById,
|
||||
getGenreSongsById,
|
||||
getPlaylistSongsById,
|
||||
getSongById,
|
||||
getSongsByQuery,
|
||||
} from '/@/renderer/features/player/utils';
|
||||
import { useCurrentServer, usePlayerControls, usePlayerStore } from '/@/renderer/store';
|
||||
import { useGeneralSettings, usePlaybackType } from '/@/renderer/store/settings.store';
|
||||
import { setQueue, setQueueNext } from '/@/renderer/utils/set-transcoded-queue-data';
|
||||
import { toast } from '/@/shared/components/toast/toast';
|
||||
import {
|
||||
instanceOfCancellationError,
|
||||
LibraryItem,
|
||||
QueueSong,
|
||||
Song,
|
||||
SongListResponse,
|
||||
} from '/@/shared/types/domain-types';
|
||||
import { Play, PlaybackType, PlayQueueAddOptions } from '/@/shared/types/types';
|
||||
// import { queryKeys } from '/@/renderer/api/query-keys';
|
||||
// import { PlayersRef } from '/@/renderer/features/player/ref/players-ref';
|
||||
// import { updateSong } from '/@/renderer/features/player/update-remote-song';
|
||||
// import {
|
||||
// getAlbumArtistSongsById,
|
||||
// getAlbumSongsById,
|
||||
// getArtistSongsById,
|
||||
// getGenreSongsById,
|
||||
// getPlaylistSongsById,
|
||||
// getSongById,
|
||||
// getSongsByQuery,
|
||||
// } from '/@/renderer/features/player/utils';
|
||||
// import { useCurrentServer, usePlayerStore } from '/@/renderer/store';
|
||||
// import { useGeneralSettings, usePlaybackType } from '/@/renderer/store/settings.store';
|
||||
// import { setQueue, setQueueNext } from '/@/renderer/utils/set-transcoded-queue-data';
|
||||
// import { toast } from '/@/shared/components/toast/toast';
|
||||
// import {
|
||||
// instanceOfCancellationError,
|
||||
// LibraryItem,
|
||||
// QueueSong,
|
||||
// Song,
|
||||
// SongListResponse,
|
||||
// } from '/@/shared/types/domain-types';
|
||||
// import { Play, PlaybackType, PlayQueueAddOptions } from '/@/shared/types/types';
|
||||
|
||||
const getRootQueryKey = (itemType: LibraryItem, serverId: string) => {
|
||||
let queryKey;
|
||||
// const getRootQueryKey = (itemType: LibraryItem, serverId: string) => {
|
||||
// let queryKey;
|
||||
|
||||
switch (itemType) {
|
||||
case LibraryItem.ALBUM:
|
||||
queryKey = queryKeys.songs.list(serverId);
|
||||
break;
|
||||
case LibraryItem.ALBUM_ARTIST:
|
||||
queryKey = queryKeys.songs.list(serverId);
|
||||
break;
|
||||
case LibraryItem.GENRE:
|
||||
queryKey = queryKeys.songs.list(serverId);
|
||||
break;
|
||||
case LibraryItem.PLAYLIST:
|
||||
queryKey = queryKeys.playlists.songList(serverId);
|
||||
break;
|
||||
case LibraryItem.SONG:
|
||||
queryKey = queryKeys.songs.list(serverId);
|
||||
break;
|
||||
default:
|
||||
queryKey = queryKeys.songs.list(serverId);
|
||||
break;
|
||||
}
|
||||
// switch (itemType) {
|
||||
// case LibraryItem.ALBUM:
|
||||
// queryKey = queryKeys.songs.list(serverId);
|
||||
// break;
|
||||
// case LibraryItem.ALBUM_ARTIST:
|
||||
// queryKey = queryKeys.songs.list(serverId);
|
||||
// break;
|
||||
// case LibraryItem.GENRE:
|
||||
// queryKey = queryKeys.songs.list(serverId);
|
||||
// break;
|
||||
// case LibraryItem.PLAYLIST:
|
||||
// queryKey = queryKeys.playlists.songList(serverId);
|
||||
// break;
|
||||
// case LibraryItem.SONG:
|
||||
// queryKey = queryKeys.songs.list(serverId);
|
||||
// break;
|
||||
// default:
|
||||
// queryKey = queryKeys.songs.list(serverId);
|
||||
// break;
|
||||
// }
|
||||
|
||||
return queryKey;
|
||||
};
|
||||
// return queryKey;
|
||||
// };
|
||||
|
||||
const mpvPlayer = isElectron() ? window.api.mpvPlayer : null;
|
||||
// const mpvPlayer = isElectron() ? window.api.mpvPlayer : null;
|
||||
|
||||
const addToQueue = usePlayerStore.getState().actions.addToQueue;
|
||||
// const addToQueue = usePlayerStore.getState().actions.addToQueue;
|
||||
|
||||
export const useHandlePlayQueueAdd = () => {
|
||||
const { t } = useTranslation();
|
||||
const queryClient = useQueryClient();
|
||||
const playbackType = usePlaybackType();
|
||||
const server = useCurrentServer();
|
||||
const { play } = usePlayerControls();
|
||||
const timeoutIds = useRef<null | Record<string, ReturnType<typeof setTimeout>>>({});
|
||||
// export const useHandlePlayQueueAdd = () => {
|
||||
// const { t } = useTranslation();
|
||||
// const queryClient = useQueryClient();
|
||||
// const playbackType = usePlaybackType();
|
||||
// const server = useCurrentServer();
|
||||
// const { play } = usePlayerControls();
|
||||
// const timeoutIds = useRef<null | Record<string, ReturnType<typeof setTimeout>>>({});
|
||||
|
||||
const { doubleClickQueueAll } = useGeneralSettings();
|
||||
// const { doubleClickQueueAll } = useGeneralSettings();
|
||||
|
||||
const handlePlayQueueAdd = useCallback(
|
||||
async (options: PlayQueueAddOptions) => {
|
||||
if (!server) return toast.error({ message: 'No server selected', type: 'error' });
|
||||
const { byData, byItemType, initialIndex, initialSongId, playType, query } = options;
|
||||
let songs: null | QueueSong[] = null;
|
||||
// Allow this to be undefined for "play shuffled". If undefined, default to 0,
|
||||
// otherwise, choose the selected item in the queue
|
||||
let initialSongIndex: number | undefined;
|
||||
let toastId: null | string = null;
|
||||
// const handlePlayQueueAdd = useCallback(
|
||||
// async (options: PlayQueueAddOptions) => {
|
||||
// if (!server) return toast.error({ message: 'No server selected', type: 'error' });
|
||||
// const { byData, byItemType, initialIndex, initialSongId, playType, query } = options;
|
||||
// let songs: null | QueueSong[] = null;
|
||||
// // Allow this to be undefined for "play shuffled". If undefined, default to 0,
|
||||
// // otherwise, choose the selected item in the queue
|
||||
// let initialSongIndex: number | undefined;
|
||||
// let toastId: null | string = null;
|
||||
|
||||
if (byItemType) {
|
||||
let songList: SongListResponse | undefined;
|
||||
const { id, type: itemType } = byItemType;
|
||||
// if (byItemType) {
|
||||
// let songList: SongListResponse | undefined;
|
||||
// const { id, type: itemType } = byItemType;
|
||||
|
||||
const fetchId = nanoid();
|
||||
timeoutIds.current = {
|
||||
...timeoutIds.current,
|
||||
[fetchId]: setTimeout(() => {
|
||||
toastId = toast.info({
|
||||
autoClose: false,
|
||||
message: t('player.playbackFetchCancel', {
|
||||
postProcess: 'sentenceCase',
|
||||
}),
|
||||
onClose: () => {
|
||||
queryClient.cancelQueries({
|
||||
exact: false,
|
||||
queryKey: getRootQueryKey(itemType, server?.id),
|
||||
});
|
||||
},
|
||||
title: t('player.playbackFetchInProgress', {
|
||||
postProcess: 'sentenceCase',
|
||||
}),
|
||||
});
|
||||
}, 2000),
|
||||
};
|
||||
// const fetchId = nanoid();
|
||||
// timeoutIds.current = {
|
||||
// ...timeoutIds.current,
|
||||
// [fetchId]: setTimeout(() => {
|
||||
// toastId = toast.info({
|
||||
// autoClose: false,
|
||||
// message: t('player.playbackFetchCancel', {
|
||||
// postProcess: 'sentenceCase',
|
||||
// }),
|
||||
// onClose: () => {
|
||||
// queryClient.cancelQueries({
|
||||
// exact: false,
|
||||
// queryKey: getRootQueryKey(itemType, server?.id),
|
||||
// });
|
||||
// },
|
||||
// title: t('player.playbackFetchInProgress', {
|
||||
// postProcess: 'sentenceCase',
|
||||
// }),
|
||||
// });
|
||||
// }, 2000),
|
||||
// };
|
||||
|
||||
try {
|
||||
if (itemType === LibraryItem.PLAYLIST) {
|
||||
songList = await getPlaylistSongsById({
|
||||
id: id?.[0],
|
||||
query,
|
||||
queryClient,
|
||||
server,
|
||||
});
|
||||
} else if (itemType === LibraryItem.ALBUM) {
|
||||
songList = await getAlbumSongsById({ id, query, queryClient, server });
|
||||
} else if (itemType === LibraryItem.ALBUM_ARTIST) {
|
||||
songList = await getAlbumArtistSongsById({
|
||||
id,
|
||||
query,
|
||||
queryClient,
|
||||
server,
|
||||
});
|
||||
} else if (itemType === LibraryItem.ARTIST) {
|
||||
songList = await getArtistSongsById({
|
||||
id,
|
||||
query,
|
||||
queryClient,
|
||||
server,
|
||||
});
|
||||
} else if (itemType === LibraryItem.GENRE) {
|
||||
songList = await getGenreSongsById({ id, query, queryClient, server });
|
||||
} else if (itemType === LibraryItem.SONG) {
|
||||
if (id?.length === 1) {
|
||||
songList = await getSongById({ id: id?.[0], queryClient, server });
|
||||
} else if (!doubleClickQueueAll && initialSongId) {
|
||||
songList = await getSongById({
|
||||
id: initialSongId,
|
||||
queryClient,
|
||||
server,
|
||||
});
|
||||
} else {
|
||||
songList = await getSongsByQuery({ query, queryClient, server });
|
||||
}
|
||||
}
|
||||
// try {
|
||||
// if (itemType === LibraryItem.PLAYLIST) {
|
||||
// songList = await getPlaylistSongsById({
|
||||
// id: id?.[0],
|
||||
// query,
|
||||
// queryClient,
|
||||
// server,
|
||||
// });
|
||||
// } else if (itemType === LibraryItem.ALBUM) {
|
||||
// songList = await getAlbumSongsById({ id, query, queryClient, server });
|
||||
// } else if (itemType === LibraryItem.ALBUM_ARTIST) {
|
||||
// songList = await getAlbumArtistSongsById({
|
||||
// id,
|
||||
// query,
|
||||
// queryClient,
|
||||
// server,
|
||||
// });
|
||||
// } else if (itemType === LibraryItem.ARTIST) {
|
||||
// songList = await getArtistSongsById({
|
||||
// id,
|
||||
// query,
|
||||
// queryClient,
|
||||
// server,
|
||||
// });
|
||||
// } else if (itemType === LibraryItem.GENRE) {
|
||||
// songList = await getGenreSongsById({ id, query, queryClient, server });
|
||||
// } else if (itemType === LibraryItem.SONG) {
|
||||
// if (id?.length === 1) {
|
||||
// songList = await getSongById({ id: id?.[0], queryClient, server });
|
||||
// } else if (!doubleClickQueueAll && initialSongId) {
|
||||
// songList = await getSongById({
|
||||
// id: initialSongId,
|
||||
// queryClient,
|
||||
// server,
|
||||
// });
|
||||
// } else {
|
||||
// songList = await getSongsByQuery({ query, queryClient, server });
|
||||
// }
|
||||
// }
|
||||
|
||||
clearTimeout(timeoutIds.current[fetchId] as ReturnType<typeof setTimeout>);
|
||||
delete timeoutIds.current[fetchId];
|
||||
if (toastId) {
|
||||
toast.hide(toastId);
|
||||
}
|
||||
} catch (err: any) {
|
||||
if (instanceOfCancellationError(err)) {
|
||||
return null;
|
||||
}
|
||||
// clearTimeout(timeoutIds.current[fetchId] as ReturnType<typeof setTimeout>);
|
||||
// delete timeoutIds.current[fetchId];
|
||||
// if (toastId) {
|
||||
// toast.hide(toastId);
|
||||
// }
|
||||
// } catch (err: any) {
|
||||
// if (instanceOfCancellationError(err)) {
|
||||
// return null;
|
||||
// }
|
||||
|
||||
clearTimeout(timeoutIds.current[fetchId] as ReturnType<typeof setTimeout>);
|
||||
delete timeoutIds.current[fetchId];
|
||||
toast.hide(fetchId);
|
||||
// clearTimeout(timeoutIds.current[fetchId] as ReturnType<typeof setTimeout>);
|
||||
// delete timeoutIds.current[fetchId];
|
||||
// toast.hide(fetchId);
|
||||
|
||||
return toast.error({
|
||||
message: err.message,
|
||||
title: t('error.genericError', { postProcess: 'sentenceCase' }) as string,
|
||||
});
|
||||
}
|
||||
// return toast.error({
|
||||
// message: err.message,
|
||||
// title: t('error.genericError', { postProcess: 'sentenceCase' }) as string,
|
||||
// });
|
||||
// }
|
||||
|
||||
songs =
|
||||
songList?.items?.map((song: Song) => ({ ...song, uniqueId: nanoid() })) || null;
|
||||
} else if (byData) {
|
||||
songs = byData.map((song) => ({ ...song, uniqueId: nanoid() })) || null;
|
||||
}
|
||||
// songs =
|
||||
// songList?.items?.map((song: Song) => ({ ...song, uniqueId: nanoid() })) || null;
|
||||
// } else if (byData) {
|
||||
// songs = byData.map((song) => ({ ...song, uniqueId: nanoid() })) || null;
|
||||
// }
|
||||
|
||||
if (!songs || songs?.length === 0)
|
||||
return toast.warn({
|
||||
message: t('common.noResultsFromQuery', { postProcess: 'sentenceCase' }),
|
||||
title: t('player.playbackFetchNoResults', { postProcess: 'sentenceCase' }),
|
||||
});
|
||||
// if (!songs || songs?.length === 0)
|
||||
// return toast.warn({
|
||||
// message: t('common.noResultsFromQuery', { postProcess: 'sentenceCase' }),
|
||||
// title: t('player.playbackFetchNoResults', { postProcess: 'sentenceCase' }),
|
||||
// });
|
||||
|
||||
if (initialIndex) {
|
||||
initialSongIndex = initialIndex;
|
||||
} else if (initialSongId) {
|
||||
initialSongIndex = songs.findIndex((song) => song.id === initialSongId);
|
||||
}
|
||||
// if (initialIndex) {
|
||||
// initialSongIndex = initialIndex;
|
||||
// } else if (initialSongId) {
|
||||
// initialSongIndex = songs.findIndex((song) => song.id === initialSongId);
|
||||
// }
|
||||
|
||||
const hadSong = usePlayerStore.getState().queue.default.length > 0;
|
||||
const playerData = addToQueue({ initialIndex: initialSongIndex, playType, songs });
|
||||
// const hadSong = usePlayerStore.getState().queue.default.length > 0;
|
||||
// const playerData = addToQueue({ initialIndex: initialSongIndex, playType, songs });
|
||||
|
||||
updateSong(playerData.current.song);
|
||||
// updateSong(playerData.current.song);
|
||||
|
||||
const replacesQueue = playType === Play.NOW || playType === Play.SHUFFLE;
|
||||
// const replacesQueue = playType === Play.NOW || playType === Play.SHUFFLE;
|
||||
|
||||
if (playbackType === PlaybackType.LOCAL) {
|
||||
mpvPlayer!.volume(usePlayerStore.getState().volume);
|
||||
// if (playbackType === PlaybackType.LOCAL) {
|
||||
// mpvPlayer!.volume(usePlayerStore.getState().volume);
|
||||
|
||||
if (replacesQueue || !hadSong) {
|
||||
mpvPlayer!.pause();
|
||||
setQueue(playerData, false);
|
||||
} else {
|
||||
setQueueNext(playerData);
|
||||
}
|
||||
} else {
|
||||
const player =
|
||||
playerData.current.player === 1
|
||||
? PlayersRef.current?.player1
|
||||
: PlayersRef.current?.player2;
|
||||
const underlying = player?.getInternalPlayer();
|
||||
if (underlying && replacesQueue) {
|
||||
underlying.currentTime = 0;
|
||||
}
|
||||
}
|
||||
// if (replacesQueue || !hadSong) {
|
||||
// mpvPlayer!.pause();
|
||||
// setQueue(playerData, false);
|
||||
// } else {
|
||||
// setQueueNext(playerData);
|
||||
// }
|
||||
// } else {
|
||||
// const player =
|
||||
// playerData.current.player === 1
|
||||
// ? PlayersRef.current?.player1
|
||||
// : PlayersRef.current?.player2;
|
||||
// const underlying = player?.getInternalPlayer();
|
||||
// if (underlying && replacesQueue) {
|
||||
// underlying.currentTime = 0;
|
||||
// }
|
||||
// }
|
||||
|
||||
// We should only play if the queue was empty, or we are doing play NOW
|
||||
// (override the queue).
|
||||
if (replacesQueue || !hadSong) {
|
||||
play();
|
||||
}
|
||||
// // We should only play if the queue was empty, or we are doing play NOW
|
||||
// // (override the queue).
|
||||
// if (replacesQueue || !hadSong) {
|
||||
// play();
|
||||
// }
|
||||
|
||||
return null;
|
||||
},
|
||||
[doubleClickQueueAll, play, playbackType, queryClient, server, t],
|
||||
);
|
||||
// return null;
|
||||
// },
|
||||
// [doubleClickQueueAll, play, playbackType, queryClient, server, t],
|
||||
// );
|
||||
|
||||
return handlePlayQueueAdd;
|
||||
};
|
||||
// return handlePlayQueueAdd;
|
||||
// };
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { useEffect } from 'react';
|
||||
|
||||
import {
|
||||
useCurrentSong,
|
||||
useCurrentStatus,
|
||||
usePlayerSong,
|
||||
usePlayerStatus,
|
||||
usePlaybackSettings,
|
||||
useSettingsStore,
|
||||
} from '/@/renderer/store';
|
||||
@@ -28,8 +28,8 @@ export const useMediaSession = ({
|
||||
handleStop: () => void;
|
||||
}) => {
|
||||
const { mediaSession: mediaSessionEnabled } = usePlaybackSettings();
|
||||
const playerStatus = useCurrentStatus();
|
||||
const currentSong = useCurrentSong();
|
||||
const playerStatus = usePlayerStatus();
|
||||
const currentSong = usePlayerSong();
|
||||
const mediaSession = navigator.mediaSession;
|
||||
const skip = useSettingsStore((state) => state.general.skipButtons);
|
||||
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
import isElectron from 'is-electron';
|
||||
import { useCallback, useEffect } from 'react';
|
||||
|
||||
import { useCurrentStatus } from '/@/renderer/store';
|
||||
import { usePlayerStatus } from '/@/renderer/store';
|
||||
import { useWindowSettings } from '/@/renderer/store';
|
||||
import { PlayerStatus } from '/@/shared/types/types';
|
||||
|
||||
const ipc = isElectron() ? window.api.ipc : null;
|
||||
|
||||
export const usePowerSaveBlocker = () => {
|
||||
const status = useCurrentStatus();
|
||||
const status = usePlayerStatus();
|
||||
const { preventSleepOnPlayback } = useWindowSettings();
|
||||
|
||||
const startPowerSaveBlocker = useCallback(async () => {
|
||||
|
||||
@@ -1,13 +1,7 @@
|
||||
import isElectron from 'is-electron';
|
||||
import { useCallback, useEffect, WheelEvent } from 'react';
|
||||
|
||||
import {
|
||||
useMuted,
|
||||
usePlayerControls,
|
||||
useSetCurrentSpeed,
|
||||
useSpeed,
|
||||
useVolume,
|
||||
} from '/@/renderer/store';
|
||||
import { usePlayerMuted, usePlayerSpeed, usePlayerVolume } from '/@/renderer/store';
|
||||
import { useGeneralSettings } from '/@/renderer/store/settings.store';
|
||||
|
||||
const mpvPlayer = isElectron() ? window.api.mpvPlayer : null;
|
||||
@@ -40,12 +34,12 @@ const calculateVolumeDown = (volume: number, volumeWheelStep: number) => {
|
||||
};
|
||||
|
||||
export const useRightControls = () => {
|
||||
const { setMuted, setVolume } = usePlayerControls();
|
||||
const volume = useVolume();
|
||||
const muted = useMuted();
|
||||
// const { setMuted, setVolume } = usePlayerControls();
|
||||
const volume = usePlayerVolume();
|
||||
const muted = usePlayerMuted();
|
||||
const { volumeWheelStep } = useGeneralSettings();
|
||||
const speed = useSpeed();
|
||||
const setCurrentSpeed = useSetCurrentSpeed();
|
||||
const speed = usePlayerSpeed();
|
||||
// const setCurrentSpeed = useSetCurrentSpeed();
|
||||
|
||||
// Ensure that the mpv player volume is set on startup
|
||||
useEffect(() => {
|
||||
@@ -63,40 +57,37 @@ export const useRightControls = () => {
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, []);
|
||||
|
||||
const handleSpeed = useCallback(
|
||||
(e: number) => {
|
||||
setCurrentSpeed(e);
|
||||
if (mpvPlayer) {
|
||||
mpvPlayer?.setProperties({ speed: e });
|
||||
}
|
||||
},
|
||||
[setCurrentSpeed],
|
||||
);
|
||||
const handleSpeed = useCallback((e: number) => {
|
||||
// setCurrentSpeed(e);
|
||||
if (mpvPlayer) {
|
||||
mpvPlayer?.setProperties({ speed: e });
|
||||
}
|
||||
}, []);
|
||||
|
||||
const handleVolumeSlider = (e: number) => {
|
||||
mpvPlayer?.volume(e);
|
||||
remote?.updateVolume(e);
|
||||
setVolume(e);
|
||||
// setVolume(e);
|
||||
};
|
||||
|
||||
const handleVolumeSliderState = (e: number) => {
|
||||
remote?.updateVolume(e);
|
||||
setVolume(e);
|
||||
// setVolume(e);
|
||||
};
|
||||
|
||||
const handleVolumeDown = useCallback(() => {
|
||||
const volumeToSet = calculateVolumeDown(volume, volumeWheelStep);
|
||||
mpvPlayer?.volume(volumeToSet);
|
||||
remote?.updateVolume(volumeToSet);
|
||||
setVolume(volumeToSet);
|
||||
}, [setVolume, volume, volumeWheelStep]);
|
||||
// setVolume(volumeToSet);
|
||||
}, [volume, volumeWheelStep]);
|
||||
|
||||
const handleVolumeUp = useCallback(() => {
|
||||
const volumeToSet = calculateVolumeUp(volume, volumeWheelStep);
|
||||
mpvPlayer?.volume(volumeToSet);
|
||||
remote?.updateVolume(volumeToSet);
|
||||
setVolume(volumeToSet);
|
||||
}, [setVolume, volume, volumeWheelStep]);
|
||||
// setVolume(volumeToSet);
|
||||
}, [volume, volumeWheelStep]);
|
||||
|
||||
const handleVolumeWheel = useCallback(
|
||||
(e: WheelEvent<HTMLButtonElement | HTMLDivElement>) => {
|
||||
@@ -109,15 +100,15 @@ export const useRightControls = () => {
|
||||
|
||||
mpvPlayer?.volume(volumeToSet);
|
||||
remote?.updateVolume(volumeToSet);
|
||||
setVolume(volumeToSet);
|
||||
// setVolume(volumeToSet);
|
||||
},
|
||||
[setVolume, volume, volumeWheelStep],
|
||||
[volume, volumeWheelStep],
|
||||
);
|
||||
|
||||
const handleMute = useCallback(() => {
|
||||
setMuted(!muted);
|
||||
// setMuted(!muted);
|
||||
mpvPlayer?.mute(!muted);
|
||||
}, [muted, setMuted]);
|
||||
}, [muted]);
|
||||
|
||||
useEffect(() => {
|
||||
if (isElectron()) {
|
||||
|
||||
Reference in New Issue
Block a user