Update player/shared components

This commit is contained in:
jeffvli
2022-10-24 22:30:16 -07:00
parent 8973571147
commit dd3de66232
21 changed files with 164 additions and 139 deletions
@@ -0,0 +1,81 @@
import { api } from '@/renderer/api';
import { Item, Play } from '../../../../types';
import { useAuthStore, usePlayerStore } from '../../../store';
import { mpvPlayer } from '../utils/mpvPlayer';
const getEndpointByItemType = (item: Item) => {
switch (item) {
case Item.ALBUM:
return api.albums.getAlbumDetail;
default:
return api.albums.getAlbumDetail;
}
};
export const usePlayQueueHandler = () => {
const serverId = useAuthStore((state) => state.currentServer?.id) || '';
const addToQueue = usePlayerStore((state) => state.addToQueue);
const handlePlayQueueAdd = async (options: {
byData?: any[];
byItemType?: {
endpoint: (params: Record<string, any>) => any;
id: number;
type: Item;
};
play: Play;
}) => {
if (options.byData) {
// dispatchSongsToQueue(options.byData, options.play);
}
if (options.byItemType) {
const deviceId = localStorage.getItem('device_id');
// const { state } = JSON.parse(
// localStorage.getItem('authentication') || '{}'
// );
if (deviceId) {
const endpoint = getEndpointByItemType(options.byItemType.type);
const { data } = await endpoint({
albumId: options.byItemType.id,
serverId,
});
const songs = data.songs?.map((song) => {
// const auth = getServerFolderAuth(
// state.serverUrl,
// song.serverFolderId
// );
// if (auth) {
// const streamUrl =
// auth.type === 'jellyfin'
// ? getJellyfinStreamUrl(auth, song, deviceId)
// : getSubsonicStreamUrl(auth, song, deviceId);
// return {
// ...song,
// streamUrl,
// };
// }
return song;
});
const playerData = addToQueue(songs || [], options.play);
console.log('playerData', playerData);
if (options.play === Play.NEXT || options.play === Play.LAST) {
mpvPlayer.setQueueNext(playerData);
} else {
mpvPlayer.setQueue(playerData);
}
}
}
};
return handlePlayQueueAdd;
};