lx-music-desktop/src/renderer/utils/compositions/useSyncSourceList.js
2022-04-02 14:13:58 +08:00

35 lines
1.1 KiB
JavaScript

import { setListUpdateTime } from '@renderer/utils/data'
import { setFetchingListStatus } from '@renderer/core/share/list'
import { useAction, useCommit } from '@renderer/utils/vueTools'
export default () => {
const getBoardListAll = useAction('leaderboard', 'getListAll')
const getListDetailAll = useAction('songList', 'getListDetailAll')
const setList = useCommit('list', 'setList')
const fetchList = (id, source, sourceListId) => {
setFetchingListStatus(id, true)
let promise
if (/board__/.test(sourceListId)) {
const id = sourceListId.replace(/board__/, '')
promise = getBoardListAll({ id, isRefresh: true })
} else {
promise = getListDetailAll({ source, id: sourceListId, isRefresh: true })
}
return promise.finally(() => {
setFetchingListStatus(id, false)
})
}
return async targetListInfo => {
const list = await fetchList(targetListInfo.id, targetListInfo.source, targetListInfo.sourceListId)
// console.log(targetListInfo.list.length, list.length)
setList({
...targetListInfo,
list,
})
setListUpdateTime(targetListInfo.id, Date.now())
}
}