-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpreload.js
More file actions
94 lines (82 loc) · 3.87 KB
/
Copy pathpreload.js
File metadata and controls
94 lines (82 loc) · 3.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
const { contextBridge, ipcRenderer } = require('electron');
// Expose protected methods that allow the renderer process to use
// the ipcRenderer without exposing the entire object
contextBridge.exposeInMainWorld('electronAPI', {
// App info
getAppVersion: () => ipcRenderer.invoke('get-app-version'),
// File dialogs
selectMusicFolder: () => ipcRenderer.invoke('select-music-folder'),
selectMusicFiles: () => ipcRenderer.invoke('select-music-files'),
// Playback controls
playTrack: (trackPath) => ipcRenderer.invoke('play-track', trackPath),
pausePlayback: () => ipcRenderer.invoke('pause-playback'),
resumePlayback: () => ipcRenderer.invoke('resume-playback'),
stopPlayback: () => ipcRenderer.invoke('stop-playback'),
nextTrack: () => ipcRenderer.invoke('next-track'),
previousTrack: () => ipcRenderer.invoke('previous-track'),
setVolume: (volume) => ipcRenderer.invoke('set-volume', volume),
getVolume: () => ipcRenderer.invoke('get-volume'),
// Library management
scanLibrary: (directories) => ipcRenderer.invoke('scan-library', directories),
getLibrary: () => ipcRenderer.invoke('get-library'),
searchLibrary: (query) => ipcRenderer.invoke('search-library', query),
getAlbumOverride: (albumId) => ipcRenderer.invoke('get-album-override', albumId),
setAlbumOverride: (albumId, payload) =>
ipcRenderer.invoke('set-album-override', albumId, payload),
// Playlist management
getPlaylists: () => ipcRenderer.invoke('get-playlists'),
createPlaylist: (playlist) => ipcRenderer.invoke('create-playlist', playlist),
deletePlaylist: (id) => ipcRenderer.invoke('delete-playlist', id),
addToPlaylist: (playlistId, trackId) => ipcRenderer.invoke('add-to-playlist', playlistId, trackId),
// Queue management
getQueue: () => ipcRenderer.invoke('get-queue'),
addToQueue: (trackId) => ipcRenderer.invoke('add-to-queue', trackId),
removeFromQueue: (index) => ipcRenderer.invoke('remove-from-queue', index),
clearQueue: () => ipcRenderer.invoke('clear-queue'),
// Settings
getSettings: () => ipcRenderer.invoke('get-settings'),
saveSettings: (settings) => ipcRenderer.invoke('save-settings', settings),
// Configuration management
getConfig: () => ipcRenderer.invoke('get-config'),
updateConfig: (section, key, value) => ipcRenderer.invoke('update-config', section, key, value),
addMusicDirectory: (directory) => ipcRenderer.invoke('add-music-directory', directory),
removeMusicDirectory: (directory) => ipcRenderer.invoke('remove-music-directory', directory),
getMusicDirectories: () => ipcRenderer.invoke('get-music-directories'),
resetConfig: () => ipcRenderer.invoke('reset-config'),
validateConfig: () => ipcRenderer.invoke('validate-config'),
// Window controls
windowControls: {
minimize: () => ipcRenderer.invoke('window-control', 'minimize'),
maximize: () => ipcRenderer.invoke('window-control', 'maximize'),
toggleMaximize: () => ipcRenderer.invoke('window-control', 'toggle-maximize'),
close: () => ipcRenderer.invoke('window-control', 'close')
},
// Generic invoke method for backward compatibility
invoke: (channel, ...args) => ipcRenderer.invoke(channel, ...args),
// Event listeners
onMusicFolderSelected: (callback) => {
ipcRenderer.on('music-folder-selected', callback);
},
onToggleSidebar: (callback) => {
ipcRenderer.on('toggle-sidebar', callback);
},
onPlaybackToggle: (callback) => {
ipcRenderer.on('playback-toggle', callback);
},
onPlaybackNext: (callback) => {
ipcRenderer.on('playback-next', callback);
},
onPlaybackPrevious: (callback) => {
ipcRenderer.on('playback-previous', callback);
},
onVolumeUp: (callback) => {
ipcRenderer.on('volume-up', callback);
},
onVolumeDown: (callback) => {
ipcRenderer.on('volume-down', callback);
},
// Remove listeners
removeAllListeners: (channel) => {
ipcRenderer.removeAllListeners(channel);
}
});