import { setListUpdateTime } from '@/utils/data'
import { overwriteListMusics, setFetchingListStatus } from './list'
import { getListDetailAll } from '@/core/songlist'
import { getListDetailAll as getBoardListAll } from '@/core/leaderboard'
const fetchList = async(id: string, source: LX.OnlineSource, sourceListId: string) => {
setFetchingListStatus(id, true)
let promise
if (/^board__/.test(sourceListId)) {
const id = sourceListId.replace(/^board__/, '')
promise = id ? getBoardListAll(id, true) : Promise.reject(new Error('id not defined: ' + sourceListId))
} else {
promise = getListDetailAll(source, sourceListId, true)
}
return promise.finally(() => {
setFetchingListStatus(id, false)
})
}
export default async(targetListInfo: LX.List.UserListInfo) => {
if (!targetListInfo.source || !targetListInfo.sourceListId) return
const list = await fetchList(targetListInfo.id, targetListInfo.source, targetListInfo.sourceListId)
void overwriteListMusics(targetListInfo.id, list)
const now = Date.now()
void setListUpdateTime(targetListInfo.id, now)
}