Fix first launch mpv playback (#210)

This commit is contained in:
jeffvli 2023-09-15 03:08:17 -07:00
parent 1badecc20a
commit d75ea94161

View file

@ -1,17 +1,17 @@
import console from 'console'; import console from 'console';
import { ipcMain } from 'electron'; import { ipcMain } from 'electron';
import { getMainWindow, getMpvInstance } from '../../../main'; import { getMpvInstance } from '../../../main';
import { PlayerData } from '/@/renderer/store'; import { PlayerData } from '/@/renderer/store';
declare module 'node-mpv'; declare module 'node-mpv';
function wait(timeout: number) { // function wait(timeout: number) {
return new Promise((resolve) => { // return new Promise((resolve) => {
setTimeout(() => { // setTimeout(() => {
resolve('resolved'); // resolve('resolved');
}, timeout); // }, timeout);
}); // });
} // }
ipcMain.handle('player-is-running', async () => { ipcMain.handle('player-is-running', async () => {
return getMpvInstance()?.isRunning(); return getMpvInstance()?.isRunning();
@ -101,6 +101,7 @@ ipcMain.on('player-set-queue', async (_event, data: PlayerData, pause?: boolean)
.catch((err) => { .catch((err) => {
console.log('MPV failed to clear playlist', err); console.log('MPV failed to clear playlist', err);
}); });
await getMpvInstance() await getMpvInstance()
?.pause() ?.pause()
.catch((err) => { .catch((err) => {
@ -109,42 +110,27 @@ ipcMain.on('player-set-queue', async (_event, data: PlayerData, pause?: boolean)
return; return;
} }
let complete = false;
let tryAttempts = 0;
while (!complete) {
if (tryAttempts > 3) {
getMainWindow()?.webContents.send('renderer-player-error', 'Failed to load song');
complete = true;
} else {
try { try {
if (data.queue.current) { if (data.queue.current) {
await getMpvInstance() getMpvInstance()
?.load(data.queue.current.streamUrl, 'replace') ?.load(data.queue.current.streamUrl, 'replace')
.then(() => {
// eslint-disable-next-line promise/always-return
if (data.queue.next) {
getMpvInstance()?.load(data.queue.next.streamUrl, 'append');
}
})
.catch((err) => { .catch((err) => {
console.log('MPV failed to load song', err); console.log('MPV failed to load song', err);
getMpvInstance()?.play();
}); });
} }
if (data.queue.next) {
await getMpvInstance()
?.load(data.queue.next.streamUrl, 'append')
.catch((err) => {
console.log('MPV failed to load next song', err);
});
}
complete = true;
} catch (err) { } catch (err) {
console.error(err); console.error(err);
tryAttempts += 1;
await wait(500);
}
}
} }
if (pause) { if (pause) {
await getMpvInstance()?.pause(); getMpvInstance()?.pause();
} }
}); });
@ -186,6 +172,7 @@ ipcMain.on('player-auto-next', async (_event, data: PlayerData) => {
?.playlistRemove(0) ?.playlistRemove(0)
.catch((err) => { .catch((err) => {
console.log('MPV failed to remove song from playlist', err); console.log('MPV failed to remove song from playlist', err);
getMpvInstance()?.pause();
}); });
if (data.queue.next) { if (data.queue.next) {