lx-music-desktop/src/renderer/utils/tools.js
2022-08-06 18:20:58 +08:00

333 lines
8.5 KiB
JavaScript

import { rendererOn, rendererSend, rendererInvoke, NAMES, rendererOff } from '@common/ipc'
import apiSourceInfo from '../utils/music/api-source-info'
import { apiSource } from '@renderer/core/share'
import * as hotKeys from '@common/hotKey'
import { markRaw } from '@renderer/utils/vueTools'
import { mainWindow as eventsNameMainWindow, winLyric as eventsNameWinLyric } from '@main/events/_name'
export const setUserApi = source => {
return rendererInvoke(NAMES.mainWindow.set_user_api, source).catch(err => {
console.log(err)
let api = apiSourceInfo.find(api => !api.disabled)
if (api) apiSource.value = api.id
})
}
export const onShowUserApiUpdateAlert = callback => {
rendererOn(NAMES.mainWindow.user_api_show_update_alert, callback)
return () => {
rendererOff(callback)
}
}
export const setAllowShowUserApiUpdateAlert = (id, enable) => {
return rendererInvoke(NAMES.mainWindow.user_api_set_allow_update_alert, { id, enable })
}
export const saveMyList = data => {
rendererSend(NAMES.mainWindow.save_playlist, {
type: 'myList',
data: JSON.stringify(data),
})
}
export const saveDownloadList = list => {
rendererSend(NAMES.mainWindow.save_playlist, {
type: 'downloadList',
data: JSON.stringify(list),
})
}
export const saveSearchHistoryList = list => {
rendererSend(NAMES.mainWindow.save_data, {
path: 'searchHistoryList',
data: list,
})
}
export const syncEnable = ({ enable, port }) => {
return rendererInvoke(NAMES.mainWindow.sync_enable, {
enable,
port,
})
}
export const setIgnoreMouseEvents = ignore => {
rendererSend(NAMES.mainWindow.set_ignore_mouse_events, ignore)
}
export const getEnvParams = () => {
return rendererInvoke(NAMES.mainWindow.get_env_params)
}
export const clearEnvParamsDeeplink = () => {
return rendererSend(NAMES.mainWindow.clear_env_params_deeplink)
}
export const onUpdateAvailable = callback => {
rendererOn(NAMES.mainWindow.update_available, callback)
return () => {
rendererOff(callback)
}
}
export const onUpdateError = callback => {
rendererOn(NAMES.mainWindow.update_error, callback)
return () => {
rendererOff(callback)
}
}
export const onUpdateProgress = callback => {
rendererOn(NAMES.mainWindow.update_progress, callback)
return () => {
rendererOff(callback)
}
}
export const onUpdateDownloaded = callback => {
rendererOn(NAMES.mainWindow.update_downloaded, callback)
return () => {
rendererOff(callback)
}
}
export const onUpdateNotAvailable = callback => {
rendererOn(NAMES.mainWindow.update_not_available, callback)
return () => {
rendererOff(callback)
}
}
export const onSetConfig = callback => {
rendererOn(NAMES.mainWindow.set_config, callback)
return () => {
rendererOff(callback)
}
}
// 获取上次关闭时的当前歌曲播放信息
export const getPlayInfo = () => {
return rendererInvoke(NAMES.mainWindow.get_data, 'playInfo')
}
// 获取搜索历史列表
export const getSearchHistoryList = () => {
return rendererInvoke(NAMES.mainWindow.get_data, 'searchHistoryList')
}
export const onUserApiStatus = callback => {
rendererOn(NAMES.mainWindow.user_api_status, callback)
return () => {
rendererOff(callback)
}
}
export const getUserApiList = () => {
return rendererInvoke(NAMES.mainWindow.get_user_api_list)
}
export const userApiRequest = ({ requestKey, data }) => {
return rendererInvoke(NAMES.mainWindow.request_user_api, {
requestKey,
data,
})
}
export const userApiRequestCancel = requestKey => {
rendererSend(NAMES.mainWindow.request_user_api_cancel, requestKey)
}
export const setDesktopLyricInfo = (type, data, info) => {
rendererSend(NAMES.mainWindow.set_lyric_info, {
type,
data,
info,
})
}
export const onGetDesktopLyricInfo = callback => {
rendererOn(NAMES.mainWindow.get_lyric_info, callback)
return () => {
rendererOff(callback)
}
}
export const setTaskBarProgress = (status, mode) => {
rendererSend(NAMES.mainWindow.progress, {
status: status < 0 ? status : Math.max(0.01, status),
mode: mode || 'normal',
})
}
export const savePlayInfo = ({ time, maxTime, listId, list, index }) => {
rendererSend(NAMES.mainWindow.save_data, {
path: 'playInfo',
data: {
time,
maxTime,
listId,
list: [],
index,
},
})
}
export const wait = (time, id) => {
return rendererInvoke(NAMES.mainWindow.wait, { time, id })
}
export const waitCancel = id => {
return rendererSend(NAMES.mainWindow.wait_cancel, id)
}
// 简体转繁体
export const langS2T = str => {
return rendererInvoke(NAMES.mainWindow.lang_s2t, Buffer.from(str).toString('base64'))
.then(b64 => Buffer.from(b64, 'base64').toString())
}
export const getSystemFonts = () => {
return rendererInvoke(NAMES.mainWindow.get_system_fonts).catch(() => {
return []
})
}
export const refreshSyncCode = () => {
return rendererInvoke(NAMES.mainWindow.sync_generate_code)
}
export const onSyncStatus = callback => {
rendererOn(NAMES.mainWindow.sync_status, callback)
return () => {
rendererOff(callback)
}
}
export const allHotKeys = markRaw({
local: [
{
name: hotKeys.player.toggle_play.name,
action: hotKeys.player.toggle_play.action,
type: eventsNameMainWindow.name,
},
{
name: hotKeys.player.prev.name,
action: hotKeys.player.prev.action,
type: eventsNameMainWindow.name,
},
{
name: hotKeys.player.next.name,
action: hotKeys.player.next.action,
type: eventsNameMainWindow.name,
},
{
name: hotKeys.common.focusSearchInput.name,
action: hotKeys.common.focusSearchInput.action,
type: eventsNameMainWindow.name,
},
{
name: hotKeys.common.min.name,
action: hotKeys.common.min.action,
type: eventsNameMainWindow.name,
},
{
name: hotKeys.common.close.name,
action: hotKeys.common.close.action,
type: eventsNameMainWindow.name,
},
],
global: [
{
name: hotKeys.common.min_toggle.name,
action: hotKeys.common.min_toggle.action,
type: eventsNameMainWindow.name,
},
{
name: hotKeys.common.hide_toggle.name,
action: hotKeys.common.hide_toggle.action,
type: eventsNameMainWindow.name,
},
{
name: hotKeys.common.close.name,
action: hotKeys.common.close.action,
type: eventsNameMainWindow.name,
},
{
name: hotKeys.player.toggle_play.name,
action: hotKeys.player.toggle_play.action,
type: eventsNameMainWindow.name,
},
{
name: hotKeys.player.prev.name,
action: hotKeys.player.prev.action,
type: eventsNameMainWindow.name,
},
{
name: hotKeys.player.next.name,
action: hotKeys.player.next.action,
type: eventsNameMainWindow.name,
},
{
name: hotKeys.player.volume_up.name,
action: hotKeys.player.volume_up.action,
type: eventsNameMainWindow.name,
},
{
name: hotKeys.player.volume_down.name,
action: hotKeys.player.volume_down.action,
type: eventsNameMainWindow.name,
},
{
name: hotKeys.player.volume_mute.name,
action: hotKeys.player.volume_mute.action,
type: eventsNameMainWindow.name,
},
{
name: hotKeys.desktop_lyric.toggle_visible.name,
action: hotKeys.desktop_lyric.toggle_visible.action,
type: eventsNameWinLyric.name,
},
{
name: hotKeys.desktop_lyric.toggle_lock.name,
action: hotKeys.desktop_lyric.toggle_lock.action,
type: eventsNameWinLyric.name,
},
{
name: hotKeys.desktop_lyric.toggle_always_top.name,
action: hotKeys.desktop_lyric.toggle_always_top.action,
type: eventsNameWinLyric.name,
},
],
})
export const hotKeySetEnable = (enable) => {
return rendererInvoke(NAMES.hotKey.enable, enable)
}
export const hotKeySetConfig = (config) => {
return rendererInvoke(NAMES.hotKey.set_config, config)
}
export const hotKeyGetStatus = () => {
return rendererInvoke(NAMES.hotKey.status)
}
export const onTaskbarThumbarClick = callback => {
rendererOn(NAMES.mainWindow.taskbar_on_thumbar_button_click, callback)
return () => {
rendererOff(callback)
}
}
export const setTaskbarThumbnailClip = (clip) => {
return rendererInvoke(NAMES.mainWindow.taskbar_set_thumbnail_clip, clip)
}
export const setTaskbarThumbarButtons = (buttons) => {
rendererSend(NAMES.mainWindow.taskbar_set_thumbar_buttons, buttons)
}
export const onSystemThemeChange = callback => {
rendererOn(NAMES.mainWindow.system_theme_change, callback)
return () => {
rendererOff(callback)
}
}