v2.0.0
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
import { LIST_IDS } from '@common/constants'
|
||||
import { ref } from '@common/utils/vueTools'
|
||||
import { playList } from '@renderer/core/player/action'
|
||||
import { getListMusics, addListMusics } from '@renderer/store/list/action'
|
||||
import { addHistoryWord } from '@renderer/store/search/action'
|
||||
// import { useI18n } from '@renderer/plugins/i18n'
|
||||
// import { } from '@renderer/store/search/state'
|
||||
import { search as searchMusic, listInfos, ListInfo } from '@renderer/store/search/music'
|
||||
import { assertApiSupport } from '@renderer/store/utils'
|
||||
|
||||
export declare type SearchSource = LX.OnlineSource | 'all'
|
||||
|
||||
export default () => {
|
||||
const listRef = ref<any>(null)
|
||||
|
||||
const listInfo = ref<ListInfo>({
|
||||
page: 1,
|
||||
maxPage: 0,
|
||||
limit: 30,
|
||||
total: 0,
|
||||
list: [],
|
||||
key: null,
|
||||
noItemLabel: '',
|
||||
})
|
||||
|
||||
const search = (text: string, source: SearchSource, page: number) => {
|
||||
listInfo.value = listInfos[source] as ListInfo
|
||||
if (text.length) void addHistoryWord(text)
|
||||
void searchMusic(text, page, source).then((list: LX.Music.MusicInfo[]) => {
|
||||
if (list.length) {
|
||||
setTimeout(() => {
|
||||
if (listRef.value) listRef.value.scrollToTop()
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
const handlePlayList = async(index: number) => {
|
||||
let targetSong = listInfo.value.list[index]
|
||||
|
||||
if (!assertApiSupport(targetSong.source)) return
|
||||
|
||||
const defaultListMusics = await getListMusics(LIST_IDS.DEFAULT)
|
||||
|
||||
await addListMusics(LIST_IDS.DEFAULT, [targetSong])
|
||||
|
||||
let targetIndex = defaultListMusics.findIndex(s => s.id === targetSong.id)
|
||||
if (targetIndex > -1) playList(LIST_IDS.DEFAULT, targetIndex)
|
||||
}
|
||||
|
||||
return {
|
||||
listRef,
|
||||
listInfo,
|
||||
search,
|
||||
handlePlayList,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user