import { rendererSend, rendererInvoke, rendererOn, rendererOff } from '@common/rendererIpc' import { CMMON_EVENT_NAME, WIN_LYRIC_RENDERER_EVENT_NAME } from '@common/ipcNames' type RemoveListener = () => void export const getSetting = async() => { return rendererInvoke(WIN_LYRIC_RENDERER_EVENT_NAME.get_config) } export const updateSetting = async(setting: Partial) => { await rendererInvoke(WIN_LYRIC_RENDERER_EVENT_NAME.set_config, setting) } export const onSettingChanged = (listener: LX.IpcRendererEventListenerParams>): RemoveListener => { rendererOn>(WIN_LYRIC_RENDERER_EVENT_NAME.on_config_change, listener) return () => { rendererOff(WIN_LYRIC_RENDERER_EVENT_NAME.on_config_change, listener) } } export const setWindowBounds = (bounds: LX.DesktopLyric.NewBounds) => { rendererSend(WIN_LYRIC_RENDERER_EVENT_NAME.set_win_bounds, bounds) } let previousResizable: boolean | null = null export const setWindowResizeable = (resizable: boolean) => { if (previousResizable === resizable) return previousResizable = resizable // https://github.com/electron/electron/issues/48352 // rendererSend(WIN_LYRIC_RENDERER_EVENT_NAME.set_win_resizeable, resizable) } export const sendConnectMainWindowEvent = () => { rendererSend(WIN_LYRIC_RENDERER_EVENT_NAME.request_main_window_channel) } export const onProvideMainWindowChannel = (listener: LX.IpcRendererEventListener): RemoveListener => { rendererOn(WIN_LYRIC_RENDERER_EVENT_NAME.provide_main_window_channel, listener) return () => { rendererOff(WIN_LYRIC_RENDERER_EVENT_NAME.provide_main_window_channel, listener) } } export const onMainWindowInited = (listener: LX.IpcRendererEventListener): RemoveListener => { rendererOn(WIN_LYRIC_RENDERER_EVENT_NAME.main_window_inited, listener) return () => { rendererOff(WIN_LYRIC_RENDERER_EVENT_NAME.main_window_inited, listener) } } export const sendMouseEnterLeave = (isEnter: boolean) => { rendererSend(WIN_LYRIC_RENDERER_EVENT_NAME.mouse_enter_leave, isEnter) } export const onMouseEnterLeave = (listener: LX.IpcRendererEventListenerParams): RemoveListener => { rendererOn(WIN_LYRIC_RENDERER_EVENT_NAME.mouse_enter_leave, listener) return () => { rendererOff(WIN_LYRIC_RENDERER_EVENT_NAME.mouse_enter_leave, listener) } } /** * On Theme Change * @param listener LX.IpcRendererEventListenerParams * @returns RemoveListener Fn */ export const onThemeChange = (listener: LX.IpcRendererEventListenerParams): RemoveListener => { rendererOn(CMMON_EVENT_NAME.theme_change, listener) return () => { rendererOff(CMMON_EVENT_NAME.theme_change, listener) } }