import { useAction, useCommit, useRouter } from '@renderer/utils/vueTools' import { parseUrlParams } from '@renderer/utils' import { defaultList, loveList, userLists } from '@renderer/core/share/list' import { getList } from '@renderer/core/share/utils' const getListPlayIndex = (list, index) => { if (index == null) { index = 1 } else { index = parseInt(index) if (Number.isNaN(index)) { index = 1 } else { if (index < 1) index = 1 else if (index > list.length) index = list.length } } return index - 1 } const useInitEnvParamSearch = () => { const router = useRouter() return search => { if (search == null) return router.push({ path: 'search', query: { text: search, }, }) } } const useInitEnvParamPlay = () => { const getListDetailAll = useAction('songList', 'getListDetailAll') const setPlayList = useCommit('player', 'setList') const setTempList = useCommit('player', 'setTempList') const playSongListDetail = async(source, link, playIndex) => { if (link == null) return let list try { list = await getListDetailAll({ source, id: decodeURIComponent(link) }) } catch (err) { console.log(err) } setTempList({ list, index: getListPlayIndex(list, playIndex), }) } return (playStr) => { if (playStr == null || typeof playStr != 'string') return // -play="source=kw&link=链接、ID" // -play="source=myList&name=名字" // -play="source=myList&name=名字&index=位置" const params = parseUrlParams(playStr) if (params.type != 'songList') return switch (params.source) { case 'myList': if (params.name != null) { let targetList const lists = [defaultList, loveList, ...userLists] for (const list of lists) { if (list.name === params.name) { targetList = list break } } if (!targetList) return setPlayList({ listId: targetList.id, index: getListPlayIndex(getList(targetList.id), params.index), }) } break case 'kw': case 'kg': case 'tx': case 'mg': case 'wy': playSongListDetail(params.source, params.link, params.index) break } } } export default () => { // 处理启动参数 search const initEnvParamSearch = useInitEnvParamSearch() // 处理启动参数 play const initEnvParamPlay = useInitEnvParamPlay() return envParams => { initEnvParamSearch(envParams.search) initEnvParamPlay(envParams.play) } }