clean up unused files

This commit is contained in:
jeffvli
2025-11-18 14:20:00 -08:00
parent 808c0167f1
commit 1acde80d61
6 changed files with 1 additions and 1200 deletions
@@ -1,9 +0,0 @@
import { createContext } from 'react';
import { PlayQueueAddOptions } from '/@/shared/types/types';
export const PlayQueueHandlerContext = createContext<{
handlePlayQueueAdd: ((options: PlayQueueAddOptions) => void) | undefined;
}>({
handlePlayQueueAdd: undefined,
});
@@ -1,771 +0,0 @@
// import isElectron from 'is-electron';
// import debounce from 'lodash/debounce';
// import { useCallback, useEffect } from 'react';
// import { useTranslation } from 'react-i18next';
// import { useScrobble } from '/@/renderer/features/player/hooks/use-scrobble';
// import { updateSong } from '/@/renderer/features/plaayer/update-remote-song';
// import {
// usePlayerNum,
// usePlayerStatus,
// usePlayerQueue,
// usePlayerControls,
// usePlayerStore,
// useRepeatStatus,
// useSetCurrentTime,
// useShuffleStatus,
// } from '/@/renderer/store';
// import { usePlaybackType } from '/@/renderer/store/settings.store';
// import { setAutoNext, setQueue, setQueueNext } from '/@/renderer/utils/set-transcoded-queue-data';
// import { toast } from '/@/shared/components/toast/toast';
// import { PlaybackType, PlayerRepeat, PlayerShuffle, PlayerStatus } from '/@/shared/types/types';
// const mpvPlayer = isElectron() ? window.api.mpvPlayer : null;
// const mpvPlayerListener = isElectron() ? window.api.mpvPlayerListener : null;
// const ipc = isElectron() ? window.api.ipc : null;
// const utils = isElectron() ? window.api.utils : null;
// const mpris = isElectron() && utils?.isLinux() ? window.api.mpris : null;
// const remote = isElectron() ? window.api.remote : null;
// const mediaSession = navigator.mediaSession;
// export const useCenterControls = (args: { playersRef: any }) => {
// const { t } = useTranslation();
// const { playersRef } = args;
// const currentPlayer = usePlayerNum();
// const { autoNext, next, pause, play, previous, setCurrentIndex, setRepeat, setShuffle } =
// usePlayerControls();
// const setCurrentTime = useSetCurrentTime();
// const queue = usePlayerQueue();
// const playerStatus = usePlayerStatus();
// const repeatStatus = useRepeatStatus();
// const shuffleStatus = useShuffleStatus();
// const playbackType = usePlaybackType();
// const player1Ref = playersRef?.current?.player1;
// const player2Ref = playersRef?.current?.player2;
// const currentPlayerRef = currentPlayer === 1 ? player1Ref : player2Ref;
// const nextPlayerRef = currentPlayer === 1 ? player2Ref : player1Ref;
// const { handleScrobbleFromSeek, handleScrobbleFromSongRestart } = useScrobble();
// useEffect(() => {
// if (mediaSession) {
// mediaSession.playbackState =
// playerStatus === PlayerStatus.PLAYING ? 'playing' : 'paused';
// }
// remote?.updatePlayback(playerStatus);
// }, [playerStatus]);
// useEffect(() => {
// remote?.updateRepeat(repeatStatus);
// }, [repeatStatus]);
// useEffect(() => {
// remote?.updateShuffle(shuffleStatus !== PlayerShuffle.NONE);
// }, [shuffleStatus]);
// const resetPlayers = useCallback(() => {
// if (player1Ref.getInternalPlayer()) {
// player1Ref.getInternalPlayer().currentTime = 0;
// player1Ref.getInternalPlayer().pause();
// }
// if (player2Ref.getInternalPlayer()) {
// player2Ref.getInternalPlayer().currentTime = 0;
// player2Ref.getInternalPlayer().pause();
// }
// }, [player1Ref, player2Ref]);
// const resetNextPlayer = useCallback(() => {
// currentPlayerRef.getInternalPlayer().volume = 0.1;
// const nextPlayer = nextPlayerRef.getInternalPlayer();
// if (nextPlayer) {
// nextPlayer.currentTime = 0;
// nextPlayer.pause();
// }
// }, [currentPlayerRef, nextPlayerRef]);
// const stopPlayback = useCallback(() => {
// player1Ref.getInternalPlayer().pause();
// player2Ref.getInternalPlayer().pause();
// resetPlayers();
// }, [player1Ref, player2Ref, resetPlayers]);
// const isMpvPlayer = isElectron() && playbackType === PlaybackType.LOCAL;
// const handlePlay = useCallback(() => {
// if (isMpvPlayer) {
// mpvPlayer?.volume(usePlayerStore.getState().volume);
// mpvPlayer!.play();
// } else {
// currentPlayerRef
// .getInternalPlayer()
// ?.play()
// .catch(() => {});
// }
// play();
// }, [currentPlayerRef, isMpvPlayer, play]);
// const handlePause = useCallback(() => {
// if (isMpvPlayer) {
// mpvPlayer!.pause();
// }
// pause();
// }, [isMpvPlayer, pause]);
// const handleStop = useCallback(() => {
// if (isMpvPlayer) {
// mpvPlayer!.stop();
// } else {
// stopPlayback();
// }
// setCurrentTime(0);
// pause();
// }, [isMpvPlayer, pause, setCurrentTime, stopPlayback]);
// const handleToggleShuffle = useCallback(() => {
// if (shuffleStatus === PlayerShuffle.NONE) {
// const playerData = setShuffle(PlayerShuffle.TRACK);
// remote?.updateShuffle(true);
// return setQueueNext(playerData);
// }
// const playerData = setShuffle(PlayerShuffle.NONE);
// remote?.updateShuffle(false);
// return setQueueNext(playerData);
// }, [setShuffle, shuffleStatus]);
// const handleToggleRepeat = useCallback(() => {
// if (repeatStatus === PlayerRepeat.NONE) {
// const playerData = setRepeat(PlayerRepeat.ALL);
// remote?.updateRepeat(PlayerRepeat.ALL);
// return setQueueNext(playerData);
// }
// if (repeatStatus === PlayerRepeat.ALL) {
// const playerData = setRepeat(PlayerRepeat.ONE);
// remote?.updateRepeat(PlayerRepeat.ONE);
// return setQueueNext(playerData);
// }
// const playerData = setRepeat(PlayerRepeat.NONE);
// remote?.updateRepeat(PlayerRepeat.NONE);
// return setQueueNext(playerData);
// }, [repeatStatus, setRepeat]);
// const checkIsLastTrack = useCallback(() => {
// return usePlayerStore.getState().actions.checkIsLastTrack();
// }, []);
// const checkIsFirstTrack = useCallback(() => {
// return usePlayerStore.getState().actions.checkIsFirstTrack();
// }, []);
// const handleAutoNext = useCallback(() => {
// const isLastTrack = checkIsLastTrack();
// const handleRepeatAll = {
// local: () => {
// const playerData = autoNext();
// updateSong(playerData.current.song);
// setAutoNext(playerData);
// play();
// },
// web: () => {
// const playerData = autoNext();
// updateSong(playerData.current.song);
// },
// };
// const handleRepeatNone = {
// local: () => {
// if (isLastTrack) {
// const playerData = setCurrentIndex(0);
// updateSong(playerData.current.song);
// setQueue(playerData, true);
// pause();
// } else {
// const playerData = autoNext();
// updateSong(playerData.current.song);
// setAutoNext(playerData);
// play();
// }
// },
// web: () => {
// if (isLastTrack) {
// resetPlayers();
// pause();
// } else {
// const playerData = autoNext();
// updateSong(playerData.current.song);
// resetPlayers();
// }
// },
// };
// const handleRepeatOne = {
// local: () => {
// const playerData = autoNext();
// updateSong(playerData.current.song);
// setAutoNext(playerData);
// play();
// },
// web: () => {
// if (isLastTrack) {
// resetPlayers();
// } else {
// autoNext();
// resetPlayers();
// }
// },
// };
// switch (repeatStatus) {
// case PlayerRepeat.ALL:
// handleRepeatAll[playbackType]();
// break;
// case PlayerRepeat.NONE:
// handleRepeatNone[playbackType]();
// break;
// case PlayerRepeat.ONE:
// handleRepeatOne[playbackType]();
// break;
// default:
// break;
// }
// }, [
// autoNext,
// checkIsLastTrack,
// pause,
// play,
// playbackType,
// repeatStatus,
// resetPlayers,
// setCurrentIndex,
// ]);
// const handleNextTrack = useCallback(() => {
// const isLastTrack = checkIsLastTrack();
// setCurrentTime(0);
// const handleRepeatAll = {
// local: () => {
// const playerData = next();
// updateSong(playerData.current.song);
// setQueue(playerData);
// },
// web: () => {
// const playerData = next();
// updateSong(playerData.current.song);
// },
// };
// const handleRepeatNone = {
// local: () => {
// if (isLastTrack) {
// const playerData = setCurrentIndex(0);
// updateSong(playerData.current.song);
// setQueue(playerData, true);
// pause();
// } else {
// const playerData = next();
// updateSong(playerData.current.song);
// setQueue(playerData);
// }
// },
// web: () => {
// if (isLastTrack) {
// const playerData = setCurrentIndex(0);
// updateSong(playerData.current.song);
// resetPlayers();
// pause();
// } else {
// const playerData = next();
// updateSong(playerData.current.song);
// resetPlayers();
// }
// },
// };
// const handleRepeatOne = {
// local: () => {
// if (!isLastTrack) {
// const playerData = next();
// updateSong(playerData.current.song);
// setQueue(playerData);
// }
// },
// web: () => {
// if (!isLastTrack) {
// const playerData = next();
// updateSong(playerData.current.song);
// }
// },
// };
// switch (repeatStatus) {
// case PlayerRepeat.ALL:
// handleRepeatAll[playbackType]();
// break;
// case PlayerRepeat.NONE:
// handleRepeatNone[playbackType]();
// break;
// case PlayerRepeat.ONE:
// handleRepeatOne[playbackType]();
// break;
// default:
// break;
// }
// setCurrentTime(0);
// }, [
// checkIsLastTrack,
// next,
// pause,
// playbackType,
// repeatStatus,
// resetPlayers,
// setCurrentIndex,
// setCurrentTime,
// ]);
// const handlePrevTrack = useCallback(() => {
// const currentTime = isMpvPlayer
// ? usePlayerStore.getState().current.time
// : currentPlayerRef.getCurrentTime();
// // Reset the current track more than 10 seconds have elapsed
// if (currentTime >= 10) {
// setCurrentTime(0, true);
// handleScrobbleFromSongRestart(currentTime);
// mpris?.updateSeek(0);
// if (isMpvPlayer) {
// return mpvPlayer!.seekTo(0);
// }
// return currentPlayerRef.seekTo(0);
// }
// const isFirstTrack = checkIsFirstTrack();
// const handleRepeatAll = {
// local: () => {
// if (!isFirstTrack) {
// const playerData = previous();
// updateSong(playerData.current.song);
// setQueue(playerData);
// } else {
// const playerData = setCurrentIndex(queue.length - 1);
// updateSong(playerData.current.song);
// setQueue(playerData);
// }
// },
// web: () => {
// if (isFirstTrack) {
// const playerData = setCurrentIndex(queue.length - 1);
// updateSong(playerData.current.song);
// resetPlayers();
// } else {
// const playerData = previous();
// updateSong(playerData.current.song);
// resetPlayers();
// }
// },
// };
// const handleRepeatNone = {
// local: () => {
// if (isFirstTrack) {
// const playerData = setCurrentIndex(0);
// updateSong(playerData.current.song);
// setQueue(playerData, true);
// pause();
// } else {
// const playerData = previous();
// updateSong(playerData.current.song);
// setQueue(playerData);
// }
// },
// web: () => {
// if (isFirstTrack) {
// resetPlayers();
// pause();
// } else {
// const playerData = previous();
// updateSong(playerData.current.song);
// resetPlayers();
// }
// },
// };
// const handleRepeatOne = {
// local: () => {
// const playerData = previous();
// updateSong(playerData.current.song);
// setQueue(playerData);
// },
// web: () => {
// const playerData = previous();
// updateSong(playerData.current.song);
// resetPlayers();
// },
// };
// switch (repeatStatus) {
// case PlayerRepeat.ALL:
// handleRepeatAll[playbackType]();
// break;
// case PlayerRepeat.NONE:
// handleRepeatNone[playbackType]();
// break;
// case PlayerRepeat.ONE:
// handleRepeatOne[playbackType]();
// break;
// default:
// break;
// }
// return setCurrentTime(0);
// }, [
// checkIsFirstTrack,
// currentPlayerRef,
// handleScrobbleFromSongRestart,
// isMpvPlayer,
// pause,
// playbackType,
// previous,
// queue.length,
// repeatStatus,
// resetPlayers,
// setCurrentIndex,
// setCurrentTime,
// ]);
// const handlePlayPause = useCallback(() => {
// if (queue.length > 0) {
// if (playerStatus === PlayerStatus.PAUSED) {
// return handlePlay();
// }
// return handlePause();
// }
// return null;
// }, [handlePause, handlePlay, playerStatus, queue]);
// const handleSkipBackward = (seconds: number) => {
// const currentTime = isMpvPlayer
// ? usePlayerStore.getState().current.time
// : currentPlayerRef.getCurrentTime();
// const evaluatedTime = currentTime - seconds;
// const newTime = evaluatedTime < 0 ? 0 : evaluatedTime;
// setCurrentTime(newTime, true);
// mpris?.updateSeek(newTime);
// if (isMpvPlayer) {
// mpvPlayer!.seek(-seconds);
// } else {
// resetNextPlayer();
// currentPlayerRef.seekTo(newTime, 'seconds');
// }
// };
// const handleSkipForward = (seconds: number) => {
// const currentTime = isMpvPlayer
// ? usePlayerStore.getState().current.time
// : currentPlayerRef.getCurrentTime();
// if (isMpvPlayer) {
// const newTime = currentTime + seconds;
// mpvPlayer!.seek(seconds);
// mpris?.updateSeek(newTime);
// setCurrentTime(newTime, true);
// } else {
// const checkNewTime = currentTime + seconds;
// const songDuration = currentPlayerRef.player.player.duration;
// const newTime = checkNewTime >= songDuration ? songDuration - 1 : checkNewTime;
// mpris?.updateSeek(newTime);
// resetNextPlayer();
// setCurrentTime(newTime, true);
// currentPlayerRef.seekTo(newTime, 'seconds');
// }
// };
// const debouncedSeek = debounce((e: number) => {
// if (isMpvPlayer) {
// mpvPlayer!.seekTo(e);
// } else {
// currentPlayerRef.seekTo(e, 'seconds');
// }
// }, 100);
// const handleSeekSlider = useCallback(
// (e: any | number) => {
// setCurrentTime(e, true);
// handleScrobbleFromSeek(e);
// debouncedSeek(e);
// mpris?.updateSeek(e);
// },
// [debouncedSeek, handleScrobbleFromSeek, setCurrentTime],
// );
// const handleQuit = useCallback(() => {
// mpvPlayer!.quit();
// }, []);
// const handleError = useCallback(
// (message: string) => {
// toast.error({
// id: 'mpv-error',
// message,
// title: t('error.playbackError', { postProcess: 'sentenceCase' }),
// });
// pause();
// mpvPlayer!.pause();
// },
// [pause, t],
// );
// useEffect(() => {
// if (mpvPlayerListener) {
// mpvPlayerListener.rendererPlayPause(() => {
// handlePlayPause();
// });
// mpvPlayerListener.rendererNext(() => {
// handleNextTrack();
// });
// mpvPlayerListener.rendererPrevious(() => {
// handlePrevTrack();
// });
// mpvPlayerListener.rendererPlay(() => {
// handlePlay();
// });
// mpvPlayerListener.rendererPause(() => {
// handlePause();
// });
// mpvPlayerListener.rendererStop(() => {
// handleStop();
// });
// mpvPlayerListener.rendererCurrentTime((_event: any, time: number) => {
// setCurrentTime(time);
// });
// mpvPlayerListener.rendererAutoNext(() => {
// handleAutoNext();
// });
// mpvPlayerListener.rendererToggleShuffle(() => {
// handleToggleShuffle();
// });
// mpvPlayerListener.rendererToggleRepeat(() => {
// handleToggleRepeat();
// });
// mpvPlayerListener.rendererError((_event: any, message: string) => {
// handleError(message);
// });
// }
// return () => {
// ipc?.removeAllListeners('renderer-player-play-pause');
// ipc?.removeAllListeners('renderer-player-next');
// ipc?.removeAllListeners('renderer-player-previous');
// ipc?.removeAllListeners('renderer-player-play');
// ipc?.removeAllListeners('renderer-player-pause');
// ipc?.removeAllListeners('renderer-player-stop');
// ipc?.removeAllListeners('renderer-player-current-time');
// ipc?.removeAllListeners('renderer-player-auto-next');
// ipc?.removeAllListeners('renderer-player-toggle-shuffle');
// ipc?.removeAllListeners('renderer-player-toggle-repeat');
// ipc?.removeAllListeners('renderer-player-error');
// };
// }, [
// autoNext,
// handleAutoNext,
// handleError,
// handleNextTrack,
// handlePause,
// handlePlay,
// handlePlayPause,
// handlePrevTrack,
// handleQuit,
// handleStop,
// handleToggleRepeat,
// handleToggleShuffle,
// isMpvPlayer,
// next,
// pause,
// play,
// previous,
// setCurrentTime,
// ]);
// useEffect(() => {
// if (!isElectron() && mediaSession) {
// mediaSession.setActionHandler('nexttrack', () => {
// handleNextTrack();
// });
// mediaSession.setActionHandler('pause', () => {
// handlePause();
// });
// mediaSession.setActionHandler('play', () => {
// handlePlay();
// });
// mediaSession.setActionHandler('previoustrack', () => {
// handlePrevTrack();
// });
// mediaSession.setActionHandler('seekto', (evt) => {
// const time = evt.seekTime;
// if (time !== undefined) {
// handleSeekSlider(time);
// }
// });
// mediaSession.setActionHandler('stop', () => {
// handleStop();
// });
// return () => {
// mediaSession.setActionHandler('nexttrack', null);
// mediaSession.setActionHandler('pause', null);
// mediaSession.setActionHandler('play', null);
// mediaSession.setActionHandler('previoustrack', null);
// mediaSession.setActionHandler('seekto', null);
// mediaSession.setActionHandler('stop', null);
// };
// }
// return () => {};
// }, [
// handleNextTrack,
// handlePause,
// handlePlay,
// handlePrevTrack,
// handleSeekSlider,
// handleStop,
// setCurrentTime,
// ]);
// useEffect(() => {
// if (remote) {
// const unsubCurrentTime = usePlayerStore.subscribe(
// (state) => state.current.time,
// (time) => {
// remote.updatePosition(time);
// },
// );
// return () => {
// unsubCurrentTime();
// };
// }
// return () => {};
// }, []);
// useEffect(() => {
// if (utils?.isLinux()) {
// mpris!.requestToggleRepeat((_e: any, data: { repeat: string }) => {
// if (data.repeat === 'Playlist') {
// usePlayerStore.getState().actions.setRepeat(PlayerRepeat.ALL);
// } else if (data.repeat === 'Track') {
// usePlayerStore.getState().actions.setRepeat(PlayerRepeat.ONE);
// } else {
// usePlayerStore.getState().actions.setRepeat(PlayerRepeat.NONE);
// }
// });
// mpris!.requestToggleShuffle((_e: any, data: { shuffle: boolean }) => {
// usePlayerStore
// .getState()
// .actions.setShuffle(data.shuffle ? PlayerShuffle.TRACK : PlayerShuffle.NONE);
// });
// return () => {
// ipc?.removeAllListeners('mpris-request-toggle-repeat');
// ipc?.removeAllListeners('mpris-request-toggle-shuffle');
// };
// }
// return () => {};
// }, [handleSeekSlider, isMpvPlayer]);
// useEffect(() => {
// if (remote) {
// remote.requestPosition((_e: any, data: { position: number }) => {
// const newTime = data.position;
// handleSeekSlider(newTime);
// });
// remote.requestSeek((_e: any, data: { offset: number }) => {
// const currentTime = usePlayerStore.getState().current.time;
// const currentSongDuration = usePlayerStore.getState().current.song?.duration || 0;
// const resultingTime = currentTime + data.offset;
// let newTime = resultingTime;
// if (resultingTime > currentSongDuration) {
// newTime = currentSongDuration - 1;
// }
// if (resultingTime < 0) {
// newTime = 0;
// }
// handleSeekSlider(newTime);
// });
// remote.requestVolume((_e: any, data: { volume: number }) => {
// usePlayerStore.getState().actions.setVolume(data.volume);
// if (isMpvPlayer) {
// mpvPlayer!.volume(data.volume);
// }
// });
// return () => {
// ipc?.removeAllListeners('request-position');
// ipc?.removeAllListeners('request-seek');
// ipc?.removeAllListeners('request-volume');
// };
// }
// return () => {};
// });
// return {
// handleNextTrack,
// handlePause,
// handlePlay,
// handlePlayPause,
// handlePrevTrack,
// handleSeekSlider,
// handleSkipBackward,
// handleSkipForward,
// handleStop,
// handleToggleRepeat,
// handleToggleShuffle,
// };
// };
@@ -1,226 +0,0 @@
// 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, 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;
// 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;
// };
// const mpvPlayer = isElectron() ? window.api.mpvPlayer : null;
// 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>>>({});
// 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;
// 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),
// };
// 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];
// toast.hide(fetchId);
// 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;
// }
// 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);
// }
// const hadSong = usePlayerStore.getState().queue.default.length > 0;
// const playerData = addToQueue({ initialIndex: initialSongIndex, playType, songs });
// updateSong(playerData.current.song);
// const replacesQueue = playType === Play.NOW || playType === Play.SHUFFLE;
// 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;
// }
// }
// // 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 handlePlayQueueAdd;
// };
@@ -1,9 +1,9 @@
import { useEffect } from 'react';
import {
usePlaybackSettings,
usePlayerSong,
usePlayerStatus,
usePlaybackSettings,
useSettingsStore,
} from '/@/renderer/store';
import { PlayerStatus } from '/@/shared/types/types';
@@ -1,144 +0,0 @@
import isElectron from 'is-electron';
import { useCallback, useEffect, WheelEvent } from 'react';
import { usePlayerMuted, usePlayerSpeed, usePlayerVolume } from '/@/renderer/store';
import { useGeneralSettings } from '/@/renderer/store/settings.store';
const mpvPlayer = isElectron() ? window.api.mpvPlayer : null;
const mpvPlayerListener = isElectron() ? window.api.mpvPlayerListener : null;
const ipc = isElectron() ? window.api.ipc : null;
const remote = isElectron() ? window.api.remote : null;
const calculateVolumeUp = (volume: number, volumeWheelStep: number) => {
let volumeToSet;
const newVolumeGreaterThanHundred = volume + volumeWheelStep > 100;
if (newVolumeGreaterThanHundred) {
volumeToSet = 100;
} else {
volumeToSet = volume + volumeWheelStep;
}
return volumeToSet;
};
const calculateVolumeDown = (volume: number, volumeWheelStep: number) => {
let volumeToSet;
const newVolumeLessThanZero = volume - volumeWheelStep < 0;
if (newVolumeLessThanZero) {
volumeToSet = 0;
} else {
volumeToSet = volume - volumeWheelStep;
}
return volumeToSet;
};
export const useRightControls = () => {
// const { setMuted, setVolume } = usePlayerControls();
const volume = usePlayerVolume();
const muted = usePlayerMuted();
const { volumeWheelStep } = useGeneralSettings();
const speed = usePlayerSpeed();
// const setCurrentSpeed = useSetCurrentSpeed();
// Ensure that the mpv player volume is set on startup
useEffect(() => {
remote?.updateVolume(volume);
if (mpvPlayer) {
mpvPlayer.volume(volume);
mpvPlayer.setProperties({ speed });
if (muted) {
mpvPlayer.mute(muted);
}
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
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);
};
const handleVolumeSliderState = (e: number) => {
remote?.updateVolume(e);
// setVolume(e);
};
const handleVolumeDown = useCallback(() => {
const volumeToSet = calculateVolumeDown(volume, volumeWheelStep);
mpvPlayer?.volume(volumeToSet);
remote?.updateVolume(volumeToSet);
// setVolume(volumeToSet);
}, [volume, volumeWheelStep]);
const handleVolumeUp = useCallback(() => {
const volumeToSet = calculateVolumeUp(volume, volumeWheelStep);
mpvPlayer?.volume(volumeToSet);
remote?.updateVolume(volumeToSet);
// setVolume(volumeToSet);
}, [volume, volumeWheelStep]);
const handleVolumeWheel = useCallback(
(e: WheelEvent<HTMLButtonElement | HTMLDivElement>) => {
let volumeToSet;
if (e.deltaY > 0 || e.deltaX > 0) {
volumeToSet = calculateVolumeDown(volume, volumeWheelStep);
} else {
volumeToSet = calculateVolumeUp(volume, volumeWheelStep);
}
mpvPlayer?.volume(volumeToSet);
remote?.updateVolume(volumeToSet);
// setVolume(volumeToSet);
},
[volume, volumeWheelStep],
);
const handleMute = useCallback(() => {
// setMuted(!muted);
mpvPlayer?.mute(!muted);
}, [muted]);
useEffect(() => {
if (isElectron()) {
mpvPlayerListener?.rendererVolumeMute(() => {
handleMute();
});
mpvPlayerListener?.rendererVolumeUp(() => {
handleVolumeUp();
});
mpvPlayerListener?.rendererVolumeDown(() => {
handleVolumeDown();
});
}
return () => {
ipc?.removeAllListeners('renderer-player-volume-mute');
ipc?.removeAllListeners('renderer-player-volume-up');
ipc?.removeAllListeners('renderer-player-volume-down');
};
}, [handleMute, handleVolumeDown, handleVolumeUp]);
return {
handleMute,
handleSpeed,
handleVolumeDown,
handleVolumeSlider,
handleVolumeSliderState,
handleVolumeUp,
handleVolumeWheel,
};
};
@@ -1,49 +0,0 @@
import type { PlayerData, QueueSong } from '/@/shared/types/domain-types';
import isElectron from 'is-electron';
import { api } from '/@/renderer/api';
import { useSettingsStore } from '/@/renderer/store';
const mpvPlayer = isElectron() ? window.api.mpvPlayer : null;
const modifyUrl = (song: QueueSong): string => {
const transcode = useSettingsStore.getState().playback.transcode;
if (transcode.enabled) {
const streamUrl = api.controller.getTranscodingUrl({
apiClientProps: {
serverId: song._serverId,
},
query: {
base: song.streamUrl,
...transcode,
},
})!;
return streamUrl;
}
return song.streamUrl;
};
export const setQueue = (data: PlayerData, pause?: boolean): void => {
const current = data.queue.current ? modifyUrl(data.queue.current) : undefined;
const next = data.queue.next ? modifyUrl(data.queue.next) : undefined;
mpvPlayer?.setQueue(current, next, pause);
};
export const setQueueNext = (data: PlayerData): void => {
if (data.queue.next) {
mpvPlayer?.setQueueNext(modifyUrl(data.queue.next));
} else {
mpvPlayer?.setQueueNext(undefined);
}
};
export const setAutoNext = (data: PlayerData): void => {
if (data.queue.next) {
mpvPlayer?.autoNext(modifyUrl(data.queue.next));
} else {
mpvPlayer?.autoNext(undefined);
}
};