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, type ListInfo } from '@renderer/store/search/music' import { assertApiSupport } from '@renderer/store/utils' export type SearchSource = LX.OnlineSource | 'all' export default () => { const listRef = ref(null) const listInfo = ref({ 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, } }