fix(ui): correct imports, guard checks, logging and settings handling

This commit is contained in:
4gray committed 2025-10-26 08:58:53 +01:00
1 parent b56519da4b
commit 9be8dce961
21 files changed
+238 -213

No files matched your search

@@ -8,6 +8,10 @@ contextBridge.exposeInMainWorld('electron', {
updatePlaylistFromFilePath: (filePath: string, title: string) =>
ipcRenderer.invoke('update-playlist-from-file-path', filePath, title),
openPlaylistFromFile: () => ipcRenderer.invoke('open-playlist-from-file'),
saveFileDialog: (defaultPath: string, filters?: { name: string; extensions: string[] }[]) =>
ipcRenderer.invoke('save-file-dialog', defaultPath, filters),
writeFile: (filePath: string, content: string) =>
ipcRenderer.invoke('write-file', filePath, content),
setUserAgent: (userAgent: string, referer?: string) =>
ipcRenderer.invoke('set-user-agent', userAgent, referer),
openInMpv: (
@@ -7,7 +7,7 @@ import axios from 'axios';
import { dialog, ipcMain } from 'electron';
import { parse } from 'iptv-playlist-parser';
import { createPlaylistObject, getFilenameFromUrl } from 'm3u-utils';
import { readFile } from 'node:fs/promises';
import { readFile, writeFile } from 'node:fs/promises';
import { AUTO_UPDATE_PLAYLISTS } from 'shared-interfaces';
export default class PlaylistEvents {
@@ -102,3 +102,33 @@ ipcMain.handle(AUTO_UPDATE_PLAYLISTS, async (event, playlistUrls) => {
console.log(`Auto-updating playlist from ${url}`);
}
});
ipcMain.handle('save-file-dialog', async (event, defaultPath, filters) => {
try {
const { canceled, filePath } = await dialog.showSaveDialog({
defaultPath,
filters: filters || [
{ name: 'All Files', extensions: ['*'] },
],
});
if (canceled || !filePath) {
return null;
}
return filePath;
} catch (error) {
console.error('Error showing save dialog:', error);
throw error;
}
});
ipcMain.handle('write-file', async (event, filePath, content) => {
try {
await writeFile(filePath, content, 'utf-8');
return { success: true };
} catch (error) {
console.error('Error writing file:', error);
throw error;
}
});
@@ -1,6 +1,5 @@
import { ipcMain } from 'electron';
import {
MPV_PLAYER_PATH,
MPV_REUSE_INSTANCE,
store,
} from '../services/store.service';
@@ -13,5 +12,9 @@ export default class SettingsEvents {
ipcMain.handle('SETTINGS_UPDATE', (_event, arg) => {
console.log('Received SETTINGS_UPDATE with data:', arg);
store.set(MPV_REUSE_INSTANCE, arg.mpvReuseInstance);
// Only set values that are defined
if (arg.mpvReuseInstance !== undefined) {
store.set(MPV_REUSE_INSTANCE, arg.mpvReuseInstance);
}
});