Skip to content

Commit

Permalink
Skip files that don't exist
Browse files Browse the repository at this point in the history
  • Loading branch information
jlbelanger committed Mar 28, 2024
1 parent 64c115f commit 080c444
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 45 deletions.
2 changes: 2 additions & 0 deletions public/electron.js
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ app.whenReady().then(() => {
mainWindow.webContents.send('shortcut', 'MediaPlayPause');
});

ipcMain.handle('fileExists', (_e, filePath) => fs.existsSync(filePath));

ipcMain.handle('readFile', (_e, filePath) => {
if (filePath && fs.existsSync(filePath)) {
const json = fs.readFileSync(filePath, 'utf8');
Expand Down
1 change: 1 addition & 0 deletions public/preload.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ electron.contextBridge.exposeInMainWorld('api', {
preventSuspension: () => {
electron.ipcRenderer.send('preventSuspension');
},
fileExists: (path) => (electron.ipcRenderer.invoke('fileExists', path)),
parseFile: (path) => (electron.ipcRenderer.invoke('parseFile', path)),
saveFile: (fileContents) => {
electron.ipcRenderer.send('saveFile', { fileContents });
Expand Down
2 changes: 1 addition & 1 deletion src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import ReactDOM from 'react-dom/client';
import registerShortcuts from './js/shortcuts';
import store from './js/store';

console.log('2024-02-23'); // eslint-disable-line no-console
console.log('2024-03-28'); // eslint-disable-line no-console

function initApp(data) {
let hasJson = false;
Expand Down
93 changes: 52 additions & 41 deletions src/js/MusicboxAudio.js
Original file line number Diff line number Diff line change
Expand Up @@ -103,54 +103,65 @@ export default class MusicboxAudio {
return;
}

const newSrc = `localfile://${song.path}`;
if (this.audio.src !== newSrc) {
this.audio.src = newSrc;
this.audio.currentTime = song.startTime / 1000;
if (isPlaying) {
this.audio.play();
}
}
window.api.fileExists(song.path)
.then((fileExists) => {
if (!fileExists) {
if (!isPlaying) {
this.audio.play();
}
document.getElementById('next').click();
return;
}

const newSrc = `localfile://${song.path}`;
if (this.audio.src !== newSrc) {
this.audio.src = newSrc;
this.audio.currentTime = song.startTime / 1000;
if (isPlaying) {
this.audio.play();
}
}

document.getElementById('now-playing-info').style.display = '';
document.getElementById('now-playing-info').style.display = '';

const duration = MusicboxAudio.calculateDuration(song.duration, song.startTime, song.endTime);
document.getElementById('now-playing').setAttribute('data-id', song.id);
document.getElementById('now-playing-time-total').innerText = MusicboxAudio.prettyTime(duration);
document.getElementById('now-playing-time-current').innerText = MusicboxAudio.prettyTime(0, duration);
const duration = MusicboxAudio.calculateDuration(song.duration, song.startTime, song.endTime);
document.getElementById('now-playing').setAttribute('data-id', song.id);
document.getElementById('now-playing-time-total').innerText = MusicboxAudio.prettyTime(duration);
document.getElementById('now-playing-time-current').innerText = MusicboxAudio.prettyTime(0, duration);

const input = document.getElementById('position-input');
input.setAttribute('value', 0);
input.setAttribute('max', duration);
document.getElementById('position-svg').setAttribute('viewBox', `0 0 ${duration} 1`);
document.getElementById('position-before').setAttribute('width', duration);
const input = document.getElementById('position-input');
input.setAttribute('value', 0);
input.setAttribute('max', duration);
document.getElementById('position-svg').setAttribute('viewBox', `0 0 ${duration} 1`);
document.getElementById('position-before').setAttribute('width', duration);

const img = document.getElementById('now-playing-img');
img.setAttribute('src', '');
img.style.visibility = 'hidden';
img.setAttribute('alt', song.album ? song.album : '');
img.setAttribute('title', song.album ? song.album : '');

document.getElementById('now-playing-title').innerText = song.title;
document.getElementById('now-playing-artist').innerText = song.artist;

if (Object.prototype.hasOwnProperty.call(this.albumArtCache, song.path)) {
const src = this.albumArtCache[song.path];
this.displayAlbumArt(src);
this.showNotification(song, src);
} else {
window.api.parseFile(song.path, newSrc)
.then((src) => {
if (this.audio.src !== newSrc) {
// A different song has started playing while the metadata was being parsed.
return;
}
const img = document.getElementById('now-playing-img');
img.setAttribute('src', '');
img.style.visibility = 'hidden';
img.setAttribute('alt', song.album ? song.album : '');
img.setAttribute('title', song.album ? song.album : '');

document.getElementById('now-playing-title').innerText = song.title;
document.getElementById('now-playing-artist').innerText = song.artist;

if (Object.prototype.hasOwnProperty.call(this.albumArtCache, song.path)) {
const src = this.albumArtCache[song.path];
this.displayAlbumArt(src);
this.albumArtCache[song.path] = src;
this.showNotification(song, src);
});
}
} else {
window.api.parseFile(song.path, newSrc)
.then((src) => {
if (this.audio.src !== newSrc) {
// A different song has started playing while the metadata was being parsed.
return;
}

this.displayAlbumArt(src);
this.albumArtCache[song.path] = src;
this.showNotification(song, src);
});
}
});
}

displayAlbumArt(src) {
Expand Down
6 changes: 3 additions & 3 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3643,9 +3643,9 @@ caniuse-api@^3.0.0:
lodash.uniq "^4.5.0"

caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001565:
version "1.0.30001589"
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001589.tgz"
integrity sha512-vNQWS6kI+q6sBlHbh71IIeC+sRwK2N3EDySc/updIGhIee2x5z00J4c1242/5/d6EpEMdOnk/m+6tuk4/tcsqg==
version "1.0.30001600"
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz"
integrity sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==

case-sensitive-paths-webpack-plugin@^2.4.0:
version "2.4.0"
Expand Down

0 comments on commit 080c444

Please sign in to comment.