import {
EVENT_APP_AUTH,
EVENT_APP_AUTH_EMITTER,
EVENT_APP_SETTING,
EVENT_APP_SETTING_EMITTER,
EVENT_APP_UPDATE,
EVENT_APP_UPDATE_EMITTER,
EVENT_MUSICCONTROL_ALL_LOOP,
EVENT_MUSICCONTROL_LIKE,
EVENT_MUSICCONTROL_LYRICS_OPEN_OR_CLOSE,
EVENT_MUSICCONTROL_NEXT,
EVENT_MUSICCONTROL_PLAYMODE,
EVENT_MUSICCONTROL_PLAYMODE_EMITTER,
EVENT_MUSICCONTROL_PLAY_OR_PAUSE,
EVENT_MUSICCONTROL_PREV,
EVENT_MUSICCONTROL_SHUFFLE,
EVENT_MUSICCONTROL_SINGLE_LOOP,
EVENT_MUSICCONTROL_VOLDOWN,
EVENT_MUSICCONTROL_VOLUP
} from '@/constants'
import { isElectron } from '@/utils'
import eventBus from '@/utils/eventBus'
import { MusicControllUtils } from '@/utils/musicControl'
import { IpcRendererEvent } from 'electron'
type IIpcRendererListener = (event: IpcRendererEvent, ...args: any[]) => void
const getEventListeners = (): Array<{
event: string
callback: IIpcRendererListener
}> => {
return [
{
event: EVENT_APP_SETTING,
callback() {
eventBus.emit(EVENT_APP_SETTING_EMITTER)
}
},
{
event: EVENT_APP_UPDATE,
callback() {
eventBus.emit(EVENT_APP_UPDATE_EMITTER)
}
},
{
event: EVENT_APP_AUTH,
callback() {
eventBus.emit(EVENT_APP_AUTH_EMITTER)
}
},
{
event: EVENT_MUSICCONTROL_PLAY_OR_PAUSE,
callback() {
MusicControllUtils.doPlayOrPause()
}
},
{
event: EVENT_MUSICCONTROL_PREV,
callback() {
MusicControllUtils.doPrev()
}
},
{
event: EVENT_MUSICCONTROL_NEXT,
callback() {
MusicControllUtils.doNext()
}
},
{
event: EVENT_MUSICCONTROL_VOLUP,
callback() {
MusicControllUtils.doVolUp()
}
},
{
event: EVENT_MUSICCONTROL_VOLDOWN,
callback() {
MusicControllUtils.doVolDown()
}
},
{
event: EVENT_MUSICCONTROL_LIKE,
callback() {
MusicControllUtils.doLike()
}
},
{
event: EVENT_MUSICCONTROL_PLAYMODE,
callback() {
eventBus.emit(EVENT_MUSICCONTROL_PLAYMODE_EMITTER)
}
},
{
event: EVENT_MUSICCONTROL_SHUFFLE,
callback() {
console.log('shuffle')
}
},
{
event: EVENT_MUSICCONTROL_SINGLE_LOOP,
callback() {
console.log('single loop')
}
},
{
event: EVENT_MUSICCONTROL_ALL_LOOP,
callback() {
console.log('all loop')
}
},
{
event: EVENT_MUSICCONTROL_LYRICS_OPEN_OR_CLOSE,
callback() {
MusicControllUtils.doOpenOrCloseLyrics()
}
}
]
}
export const setupMainEvent = () => {
if (!isElectron) {
return
}
getEventListeners().forEach(({ event, callback }) => {
ipcRenderer.on(event, callback)
})
}