35 lines
1.1 KiB
JavaScript
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())
|
|
}
|
|
}
|