lx-music-desktop/src/renderer/core/useApp/useDataInit.ts

49 lines
1.4 KiB
TypeScript

import { getPlayInfo } from '@renderer/utils/ipc'
import music from '@renderer/utils/musicSdk'
import { log } from '@common/utils'
import { getListMusics, getUserLists, registerAction } from '@renderer/store/list/action'
import useInitUserApi from './useInitUserApi'
import { play, playList } from '@renderer/core/player'
import { onBeforeUnmount } from '@common/utils/vueTools'
import { appSetting } from '@renderer/store/setting'
const initPrevPlayInfo = async() => {
const info = await getPlayInfo()
window.lx.restorePlayInfo = null
if (!info?.listId || info.index < 0) return
const list = await getListMusics(info.listId)
if (!list[info.index]) return
window.lx.restorePlayInfo = info
playList(info.listId, info.index)
if (appSetting['player.startupAutoPlay']) setTimeout(play)
}
export default () => {
const initUserApi = useInitUserApi()
let unregister: null | (() => void) = null
onBeforeUnmount(() => {
if (unregister) unregister()
})
return async() => {
await Promise.all([
initUserApi(), // 自定义API
]).catch(err => {
log.error(err)
})
void music.init() // 初始化音乐sdk
unregister = registerAction((ids) => {
window.app_event.myListUpdate(ids)
})
window.lxData.userLists = await getUserLists() // 获取用户列表
await initPrevPlayInfo().catch(err => {
log.error(err)
}) // 初始化上次的歌曲播放信息
}
}