import { ipcRenderer, IpcRendererEvent } from 'electron'; import { QueueSong } from '/@/shared/types/domain-types'; import { PlayerRepeat, PlayerStatus } from '/@/shared/types/types'; const updatePosition = (timeSec: number) => { ipcRenderer.send('update-position', timeSec); }; const updateSeek = (timeSec: number) => { ipcRenderer.send('update-seek', timeSec); }; const updateVolume = (volume: number) => { ipcRenderer.send('update-volume', volume); }; const updateStatus = (status: PlayerStatus) => { ipcRenderer.send('update-playback', status); }; const updateRepeat = (repeat: PlayerRepeat) => { ipcRenderer.send('update-repeat', repeat); }; const updateShuffle = (shuffle: boolean) => { ipcRenderer.send('update-shuffle', shuffle); }; const updateSong = (song: QueueSong | undefined, imageUrl?: null | string) => { ipcRenderer.send('update-song', song, imageUrl); }; const requestSeek = (cb: (event: IpcRendererEvent, data: { offset: number }) => void) => { ipcRenderer.on('request-seek', cb); }; const requestPosition = (cb: (event: IpcRendererEvent, data: { position: number }) => void) => { ipcRenderer.on('request-position', cb); }; const requestToggleRepeat = ( cb: (event: IpcRendererEvent, data: { repeat: PlayerRepeat }) => void, ) => { ipcRenderer.on('mpris-request-toggle-repeat', cb); }; const requestToggleShuffle = ( cb: (event: IpcRendererEvent, data: { shuffle: boolean }) => void, ) => { ipcRenderer.on('mpris-request-toggle-shuffle', cb); }; const requestVolume = (cb: (event: IpcRendererEvent, data: { volume: number }) => void) => { ipcRenderer.on('request-volume', cb); }; export const mpris = { requestPosition, requestSeek, requestToggleRepeat, requestToggleShuffle, requestVolume, updatePosition, updateRepeat, updateSeek, updateShuffle, updateSong, updateStatus, updateVolume, }; export type Mpris = typeof mpris;