v2.0.0
This commit is contained in:
@@ -0,0 +1,290 @@
|
||||
import { shallowReactive, markRaw, markRawList, toRaw } from '@common/utils/vueTools'
|
||||
import {
|
||||
allMusicList,
|
||||
defaultList,
|
||||
loveList,
|
||||
tempList,
|
||||
userLists,
|
||||
} from './state'
|
||||
import { overwriteListPosition, overwriteListUpdateInfo, removeListPosition, removeListUpdateInfo } from '@renderer/utils/data'
|
||||
import { LIST_IDS } from '@common/constants'
|
||||
|
||||
export const setUserLists = (lists: LX.List.UserListInfo[]) => {
|
||||
userLists.splice(0, userLists.length, ...lists)
|
||||
return userLists
|
||||
}
|
||||
|
||||
export const setMusicList = (listId: string, musicList: LX.Music.MusicInfo[]) => {
|
||||
const list = shallowReactive(markRawList(musicList))
|
||||
allMusicList.set(listId, shallowReactive(musicList))
|
||||
return list
|
||||
}
|
||||
|
||||
const overwriteMusicList = (id: string, list: LX.Music.MusicInfo[]) => {
|
||||
// console.log(id, list)
|
||||
markRawList(list)
|
||||
let targetList = allMusicList.get(id)
|
||||
if (targetList) {
|
||||
targetList.splice(0, targetList.length, ...list)
|
||||
} else {
|
||||
allMusicList.set(id, shallowReactive(list))
|
||||
}
|
||||
}
|
||||
const removeMusicList = (id: string) => {
|
||||
allMusicList.delete(id)
|
||||
}
|
||||
|
||||
const createUserList = ({
|
||||
name,
|
||||
id,
|
||||
source,
|
||||
sourceListId,
|
||||
locationUpdateTime,
|
||||
}: LX.List.UserListInfo, position: number) => {
|
||||
if (position < 0 || position >= userLists.length) {
|
||||
userLists.push({
|
||||
name,
|
||||
id,
|
||||
source,
|
||||
sourceListId,
|
||||
locationUpdateTime,
|
||||
})
|
||||
} else {
|
||||
userLists.splice(position, 0, {
|
||||
name,
|
||||
id,
|
||||
source,
|
||||
sourceListId,
|
||||
locationUpdateTime,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
const updateList = ({
|
||||
name,
|
||||
id,
|
||||
source,
|
||||
sourceListId,
|
||||
meta,
|
||||
locationUpdateTime,
|
||||
}: LX.List.UserListInfo & { meta?: { id?: string } }) => {
|
||||
let targetList
|
||||
switch (id) {
|
||||
case defaultList.id:
|
||||
case loveList.id:
|
||||
break
|
||||
case tempList.id:
|
||||
tempList.meta = meta ?? {}
|
||||
break
|
||||
default:
|
||||
targetList = userLists.find(l => l.id == id)
|
||||
if (!targetList) return
|
||||
targetList.name = name
|
||||
targetList.source = source
|
||||
targetList.sourceListId = sourceListId
|
||||
targetList.locationUpdateTime = locationUpdateTime
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
const removeUserList = (id: string) => {
|
||||
const index = userLists.findIndex(l => l.id == id)
|
||||
if (index < 0) return
|
||||
userLists.splice(index, 1)
|
||||
// removeMusicList(id)
|
||||
}
|
||||
|
||||
const overwriteUserList = (lists: LX.List.UserListInfo[]) => {
|
||||
userLists.splice(0, lists.length, ...lists)
|
||||
}
|
||||
|
||||
|
||||
// const sendMyListUpdateEvent = (ids: string[]) => {
|
||||
// window.app_event.myListUpdate(ids)
|
||||
// }
|
||||
|
||||
|
||||
export const listDataOverwrite = ({ defaultList, loveList, userList, tempList }: MakeOptional<LX.List.ListDataFull, 'tempList'>): string[] => {
|
||||
const updatedListIds: string[] = []
|
||||
overwriteUserList(userList.map(({ list, ...listInfo }) => {
|
||||
if (allMusicList.has(listInfo.id)) {
|
||||
overwriteMusicList(listInfo.id, list)
|
||||
updatedListIds.push(listInfo.id)
|
||||
}
|
||||
return listInfo
|
||||
}))
|
||||
if (allMusicList.has(LIST_IDS.DEFAULT)) {
|
||||
overwriteMusicList(LIST_IDS.DEFAULT, defaultList)
|
||||
updatedListIds.push(LIST_IDS.DEFAULT)
|
||||
}
|
||||
if (allMusicList.has(LIST_IDS.LOVE)) {
|
||||
overwriteMusicList(LIST_IDS.LOVE, loveList)
|
||||
}
|
||||
updatedListIds.push(LIST_IDS.LOVE)
|
||||
|
||||
if (tempList && allMusicList.has(LIST_IDS.TEMP)) {
|
||||
overwriteMusicList(LIST_IDS.TEMP, tempList)
|
||||
updatedListIds.push(LIST_IDS.TEMP)
|
||||
}
|
||||
const newIds = [LIST_IDS.DEFAULT, LIST_IDS.LOVE, ...userList.map(l => l.id)]
|
||||
if (tempList) newIds.push(LIST_IDS.TEMP)
|
||||
overwriteListPosition(newIds)
|
||||
overwriteListUpdateInfo(newIds)
|
||||
return updatedListIds
|
||||
}
|
||||
|
||||
export const userListCreate = ({ name, id, source, sourceListId, position, locationUpdateTime }: {
|
||||
name: string
|
||||
id: string
|
||||
source?: LX.Source
|
||||
sourceListId?: string
|
||||
position: number
|
||||
locationUpdateTime: number | null
|
||||
}) => {
|
||||
if (userLists.some(item => item.id == id)) return
|
||||
const newList: LX.List.UserListInfo = {
|
||||
name,
|
||||
id,
|
||||
source,
|
||||
sourceListId,
|
||||
locationUpdateTime,
|
||||
}
|
||||
createUserList(newList, position)
|
||||
}
|
||||
|
||||
export const userListsRemove = (ids: string[]) => {
|
||||
const changedIds = []
|
||||
for (const id of ids) {
|
||||
removeUserList(id)
|
||||
if (!allMusicList.has(id)) continue
|
||||
removeMusicList(id)
|
||||
removeListPosition(id)
|
||||
removeListUpdateInfo(id)
|
||||
changedIds.push(id)
|
||||
}
|
||||
|
||||
return changedIds
|
||||
}
|
||||
|
||||
export const userListsUpdate = (listInfos: LX.List.UserListInfo[]) => {
|
||||
for (const info of listInfos) {
|
||||
updateList(info)
|
||||
}
|
||||
}
|
||||
|
||||
export const userListsUpdatePosition = (position: number, ids: string[]) => {
|
||||
const newUserLists = [...userLists]
|
||||
|
||||
// console.log(position, ids)
|
||||
|
||||
const updateLists: LX.List.UserListInfo[] = []
|
||||
|
||||
for (let i = newUserLists.length; i--;) {
|
||||
if (ids.includes(newUserLists[i].id)) {
|
||||
const list = newUserLists.splice(i, 1)[0]
|
||||
list.locationUpdateTime = Date.now()
|
||||
updateLists.push(list)
|
||||
}
|
||||
}
|
||||
position = Math.min(newUserLists.length, position)
|
||||
|
||||
newUserLists.splice(position, 0, ...updateLists)
|
||||
setUserLists(newUserLists)
|
||||
}
|
||||
|
||||
export const listMusicOverwrite = (listId: string, musicInfos: LX.Music.MusicInfo[]): string[] => {
|
||||
const isExist = allMusicList.has(listId)
|
||||
overwriteMusicList(listId, musicInfos)
|
||||
return isExist || listId == loveList.id ? [listId] : []
|
||||
}
|
||||
|
||||
export const listMusicAdd = (id: string, musicInfos: LX.Music.MusicInfo[], addMusicLocationType: LX.AddMusicLocationType): string[] => {
|
||||
const targetList = allMusicList.get(id)
|
||||
if (!targetList) return id == loveList.id ? [id] : []
|
||||
|
||||
const listSet = new Set<string>()
|
||||
for (const item of targetList) listSet.add(item.id)
|
||||
musicInfos = musicInfos.filter(item => {
|
||||
if (listSet.has(item.id)) return false
|
||||
markRaw(item)
|
||||
listSet.add(item.id)
|
||||
return true
|
||||
})
|
||||
switch (addMusicLocationType) {
|
||||
case 'top':
|
||||
targetList.unshift(...musicInfos)
|
||||
break
|
||||
case 'bottom':
|
||||
default:
|
||||
targetList.push(...musicInfos)
|
||||
break
|
||||
}
|
||||
|
||||
return [id]
|
||||
}
|
||||
|
||||
export const listMusicMove = (fromId: string, toId: string, musicInfos: LX.Music.MusicInfo[], addMusicLocationType: LX.AddMusicLocationType): string[] => {
|
||||
return [
|
||||
...listMusicRemove(fromId, musicInfos.map(musicInfo => musicInfo.id)),
|
||||
...listMusicAdd(toId, musicInfos, addMusicLocationType),
|
||||
]
|
||||
}
|
||||
|
||||
export const listMusicRemove = (listId: string, ids: string[]): string[] => {
|
||||
let targetList = allMusicList.get(listId)
|
||||
if (!targetList) return listId == loveList.id ? [listId] : []
|
||||
|
||||
ids = [...ids]
|
||||
for (let i = targetList.length - 1; i > -1; i--) {
|
||||
const item = targetList[i]
|
||||
const index = ids.indexOf(item.id)
|
||||
if (index < 0) continue
|
||||
ids.splice(index, 1)
|
||||
targetList.splice(i, 1)
|
||||
}
|
||||
return [listId]
|
||||
}
|
||||
|
||||
export const listMusicUpdateInfo = (musicInfos: LX.List.ListActionMusicUpdate): string[] => {
|
||||
const updateListIds = new Set<string>()
|
||||
for (const { id, musicInfo } of musicInfos) {
|
||||
const targetList = allMusicList.get(id)
|
||||
if (!targetList) continue
|
||||
const index = targetList.findIndex(l => l.id == musicInfo.id)
|
||||
if (index < 0) continue
|
||||
const info: LX.Music.MusicInfo = { ...targetList[index] }
|
||||
Object.assign(info, {
|
||||
name: musicInfo.name,
|
||||
singer: musicInfo.singer,
|
||||
source: musicInfo.source,
|
||||
interval: musicInfo.interval,
|
||||
meta: musicInfo.meta,
|
||||
})
|
||||
targetList.splice(index, 1, markRaw(info))
|
||||
updateListIds.add(id)
|
||||
}
|
||||
return Array.from(updateListIds)
|
||||
}
|
||||
|
||||
export const listMusicUpdatePosition = async(listId: string, position: number, ids: string[]): Promise<string[]> => {
|
||||
let targetList = allMusicList.get(listId)
|
||||
if (!targetList) return listId == loveList.id ? [listId] : []
|
||||
|
||||
|
||||
// const infos = Array(ids.length)
|
||||
// for (let i = targetList.length; i--;) {
|
||||
// const item = targetList[i]
|
||||
// const index = ids.indexOf(item.id)
|
||||
// if (index < 0) continue
|
||||
// infos.splice(index, 1, targetList.splice(i, 1)[0])
|
||||
// }
|
||||
// targetList.splice(Math.min(position, targetList.length - 1), 0, ...infos)
|
||||
|
||||
// console.time('ts')
|
||||
|
||||
const list = await window.lx.worker.main.createSortedList(toRaw(targetList), position, ids)
|
||||
markRawList(list)
|
||||
targetList.splice(0, targetList.length, ...list)
|
||||
// console.timeEnd('ts')
|
||||
return [listId]
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
export * from './rendererListManage'
|
||||
export * from './state'
|
||||
@@ -0,0 +1,249 @@
|
||||
import { toRaw } from '@common/utils/vueTools'
|
||||
import { rendererInvoke, rendererOff, rendererOn } from '@common/rendererIpc'
|
||||
import { PLAYER_EVENT_NAME } from '@common/ipcNames'
|
||||
import {
|
||||
userListCreate,
|
||||
listDataOverwrite,
|
||||
userListsRemove,
|
||||
userListsUpdate,
|
||||
userListsUpdatePosition,
|
||||
listMusicAdd,
|
||||
listMusicMove,
|
||||
listMusicRemove,
|
||||
listMusicOverwrite,
|
||||
listMusicUpdateInfo,
|
||||
listMusicUpdatePosition,
|
||||
setMusicList,
|
||||
setUserLists,
|
||||
} from './action'
|
||||
import { allMusicList } from './state'
|
||||
|
||||
/**
|
||||
* 获取用户列表
|
||||
* @returns 所有用户列表
|
||||
*/
|
||||
export const getUserLists = async() => {
|
||||
const lists = await rendererInvoke<LX.List.UserListInfo[]>(PLAYER_EVENT_NAME.list_get)
|
||||
return setUserLists(lists)
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加用户列表
|
||||
* @param data
|
||||
*/
|
||||
export const createUserList = async(data: LX.List.ListActionAdd) => {
|
||||
data.listInfos = data.listInfos.map(info => toRaw(info))
|
||||
await rendererInvoke<LX.List.ListActionAdd>(PLAYER_EVENT_NAME.list_add, data)
|
||||
}
|
||||
|
||||
/**
|
||||
* 移除用户列表及列表内歌曲
|
||||
* @param data
|
||||
*/
|
||||
export const removeUserList = async(data: LX.List.ListActionRemove) => {
|
||||
await rendererInvoke<LX.List.ListActionRemove>(PLAYER_EVENT_NAME.list_remove, data)
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新用户列表
|
||||
* @param data
|
||||
*/
|
||||
export const updateUserList = async(data: LX.List.ListActionUpdate) => {
|
||||
data = data.map(info => toRaw(info))
|
||||
await rendererInvoke<LX.List.ListActionUpdate>(PLAYER_EVENT_NAME.list_update, data)
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量移动用户列表位置
|
||||
* @param data
|
||||
*/
|
||||
export const updateUserListPosition = async(data: LX.List.ListActionUpdatePosition) => {
|
||||
await rendererInvoke<LX.List.ListActionUpdatePosition>(PLAYER_EVENT_NAME.list_update_position, data)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取列表内的歌曲
|
||||
* @param listId
|
||||
*/
|
||||
export const getListMusics = async(listId: string | null): Promise<LX.Music.MusicInfo[]> => {
|
||||
if (!listId) return []
|
||||
if (allMusicList.has(listId)) return allMusicList.get(listId) as LX.Music.MusicInfo[]
|
||||
const list = await rendererInvoke<string, LX.Music.MusicInfo[]>(PLAYER_EVENT_NAME.list_music_get, listId)
|
||||
return setMusicList(listId, list)
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量添加歌曲到列表
|
||||
* @param data
|
||||
*/
|
||||
export const addListMusics = async(data: LX.List.ListActionMusicAdd) => {
|
||||
await rendererInvoke<LX.List.ListActionMusicAdd>(PLAYER_EVENT_NAME.list_music_add, data)
|
||||
}
|
||||
|
||||
/**
|
||||
* 跨列表批量移动歌曲
|
||||
* @param data
|
||||
*/
|
||||
export const moveListMusics = async(data: LX.List.ListActionMusicMove) => {
|
||||
await rendererInvoke<LX.List.ListActionMusicMove>(PLAYER_EVENT_NAME.list_music_move, data)
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除列表内歌曲
|
||||
* @param data
|
||||
*/
|
||||
export const removeListMusics = async(data: LX.List.ListActionMusicRemove) => {
|
||||
await rendererInvoke<LX.List.ListActionMusicRemove>(PLAYER_EVENT_NAME.list_music_remove, data)
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量更新列表内歌曲
|
||||
* @param data
|
||||
*/
|
||||
export const updateListMusics = async(data: LX.List.ListActionMusicUpdate) => {
|
||||
await rendererInvoke<LX.List.ListActionMusicUpdate>(PLAYER_EVENT_NAME.list_music_update, data)
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量移动列表内歌曲的位置
|
||||
* @param data
|
||||
*/
|
||||
export const updateListMusicsPosition = async(data: LX.List.ListActionMusicUpdatePosition) => {
|
||||
await rendererInvoke<LX.List.ListActionMusicUpdatePosition>(PLAYER_EVENT_NAME.list_music_update_position, data)
|
||||
}
|
||||
|
||||
/**
|
||||
* 覆盖列表内的歌曲
|
||||
* @param data
|
||||
*/
|
||||
export const overwriteListMusics = async(data: LX.List.ListActionMusicOverwrite) => {
|
||||
await rendererInvoke<LX.List.ListActionMusicOverwrite>(PLAYER_EVENT_NAME.list_music_overwrite, data)
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空列表内的歌曲
|
||||
* @param listId
|
||||
*/
|
||||
export const clearListMusics = async(listId: LX.List.ListActionMusicClear) => {
|
||||
await rendererInvoke<LX.List.ListActionMusicClear>(PLAYER_EVENT_NAME.list_music_clear, listId)
|
||||
}
|
||||
|
||||
/**
|
||||
* 覆盖全部列表数据
|
||||
* @param data
|
||||
*/
|
||||
export const overwriteListFull = async(data: LX.List.ListActionDataOverwrite) => {
|
||||
data.defaultList = toRaw(data.defaultList)
|
||||
data.loveList = toRaw(data.loveList)
|
||||
if (data.tempList) {
|
||||
data.tempList = toRaw(data.tempList)
|
||||
}
|
||||
data.userList = data.userList.map(info => {
|
||||
return {
|
||||
...info,
|
||||
list: toRaw(info.list),
|
||||
}
|
||||
})
|
||||
|
||||
await rendererInvoke<LX.List.ListActionDataOverwrite>(PLAYER_EVENT_NAME.list_data_overwire, data)
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查音乐是否存在列表中
|
||||
* @param listId
|
||||
* @param musicInfoId
|
||||
*/
|
||||
export const checkListExistMusic = async(listId: string, musicInfoId: string): Promise<boolean> => {
|
||||
return await rendererInvoke<LX.List.ListActionCheckMusicExistList, boolean>(PLAYER_EVENT_NAME.list_music_check_exist, { listId, musicInfoId })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有存在该音乐的列表id
|
||||
* @param musicInfoId
|
||||
*/
|
||||
export const getMusicExistListIds = async(musicInfoId: string): Promise<string[]> => {
|
||||
return await rendererInvoke<string, string[]>(PLAYER_EVENT_NAME.list_music_get_list_ids, musicInfoId)
|
||||
}
|
||||
|
||||
|
||||
const noop = () => {}
|
||||
|
||||
|
||||
export const registerListAction = (appSetting: LX.AppSetting, onListChanged: (listIds: string[]) => void = noop) => {
|
||||
const list_data_overwrite = ({ params: datas }: LX.IpcRendererEventParams<LX.List.ListActionDataOverwrite>) => {
|
||||
const updatedListIds = listDataOverwrite(datas)
|
||||
if (updatedListIds.length) onListChanged(updatedListIds)
|
||||
}
|
||||
const list_create = ({ params: { position, listInfos } }: LX.IpcRendererEventParams<LX.List.ListActionAdd>) => {
|
||||
for (const list of listInfos) {
|
||||
userListCreate({ ...list, position })
|
||||
}
|
||||
}
|
||||
const list_remove = ({ params: ids }: LX.IpcRendererEventParams<LX.List.ListActionRemove>) => {
|
||||
const updatedListIds = userListsRemove(ids)
|
||||
if (updatedListIds.length) onListChanged(updatedListIds)
|
||||
}
|
||||
const list_update = ({ params: listInfos }: LX.IpcRendererEventParams<LX.List.ListActionUpdate>) => {
|
||||
userListsUpdate(listInfos)
|
||||
}
|
||||
const list_update_position = ({ params: { position, ids } }: LX.IpcRendererEventParams<LX.List.ListActionUpdatePosition>) => {
|
||||
userListsUpdatePosition(position, ids)
|
||||
}
|
||||
const list_music_add = ({ params: { id, musicInfos, addMusicLocationType } }: LX.IpcRendererEventParams<LX.List.ListActionMusicAdd>) => {
|
||||
if (!addMusicLocationType) addMusicLocationType = appSetting['list.addMusicLocationType']
|
||||
const updatedListIds = listMusicAdd(id, musicInfos, addMusicLocationType)
|
||||
if (updatedListIds.length) onListChanged(updatedListIds)
|
||||
}
|
||||
const list_music_move = ({ params: { fromId, toId, musicInfos, addMusicLocationType } }: LX.IpcRendererEventParams<LX.List.ListActionMusicMove>) => {
|
||||
if (!addMusicLocationType) addMusicLocationType = appSetting['list.addMusicLocationType']
|
||||
const updatedListIds = listMusicMove(fromId, toId, musicInfos, addMusicLocationType)
|
||||
if (updatedListIds.length) onListChanged(updatedListIds)
|
||||
}
|
||||
const list_music_remove = ({ params: { listId, ids } }: LX.IpcRendererEventParams<LX.List.ListActionMusicRemove>) => {
|
||||
// console.log(listId, ids)
|
||||
const updatedListIds = listMusicRemove(listId, ids)
|
||||
if (updatedListIds.length) onListChanged(updatedListIds)
|
||||
}
|
||||
const list_music_update = ({ params: musicInfos }: LX.IpcRendererEventParams<LX.List.ListActionMusicUpdate>) => {
|
||||
listMusicUpdateInfo(musicInfos)
|
||||
// const updatedListIds = listMusicUpdateInfo(musicInfos)
|
||||
// if (updatedListIds.length) onListChanged(updatedListIds)
|
||||
}
|
||||
const list_music_update_position = ({ params: { listId, position, ids } }: LX.IpcRendererEventParams<LX.List.ListActionMusicUpdatePosition>) => {
|
||||
void listMusicUpdatePosition(listId, position, ids).then(updatedListIds => {
|
||||
if (updatedListIds.length) onListChanged(updatedListIds)
|
||||
})
|
||||
}
|
||||
const list_music_overwrite = ({ params: { listId, musicInfos } }: LX.IpcRendererEventParams<LX.List.ListActionMusicOverwrite>) => {
|
||||
const updatedListIds = listMusicOverwrite(listId, musicInfos)
|
||||
if (updatedListIds.length) onListChanged(updatedListIds)
|
||||
}
|
||||
|
||||
rendererOn(PLAYER_EVENT_NAME.list_data_overwire, list_data_overwrite)
|
||||
rendererOn(PLAYER_EVENT_NAME.list_add, list_create)
|
||||
rendererOn(PLAYER_EVENT_NAME.list_remove, list_remove)
|
||||
rendererOn(PLAYER_EVENT_NAME.list_update, list_update)
|
||||
rendererOn(PLAYER_EVENT_NAME.list_update_position, list_update_position)
|
||||
rendererOn(PLAYER_EVENT_NAME.list_music_add, list_music_add)
|
||||
rendererOn(PLAYER_EVENT_NAME.list_music_move, list_music_move)
|
||||
rendererOn(PLAYER_EVENT_NAME.list_music_remove, list_music_remove)
|
||||
rendererOn(PLAYER_EVENT_NAME.list_music_update, list_music_update)
|
||||
rendererOn(PLAYER_EVENT_NAME.list_music_update_position, list_music_update_position)
|
||||
rendererOn(PLAYER_EVENT_NAME.list_music_overwrite, list_music_overwrite)
|
||||
// rendererOn(PLAYER_EVENT_NAME.list_data_overwire, list_music_clear)
|
||||
|
||||
return () => {
|
||||
rendererOff(PLAYER_EVENT_NAME.list_data_overwire, list_data_overwrite)
|
||||
rendererOff(PLAYER_EVENT_NAME.list_add, list_create)
|
||||
rendererOff(PLAYER_EVENT_NAME.list_remove, list_remove)
|
||||
rendererOff(PLAYER_EVENT_NAME.list_update, list_update)
|
||||
rendererOff(PLAYER_EVENT_NAME.list_update_position, list_update_position)
|
||||
rendererOff(PLAYER_EVENT_NAME.list_music_add, list_music_add)
|
||||
rendererOff(PLAYER_EVENT_NAME.list_music_move, list_music_move)
|
||||
rendererOff(PLAYER_EVENT_NAME.list_music_remove, list_music_remove)
|
||||
rendererOff(PLAYER_EVENT_NAME.list_music_update, list_music_update)
|
||||
rendererOff(PLAYER_EVENT_NAME.list_music_update_position, list_music_update_position)
|
||||
rendererOff(PLAYER_EVENT_NAME.list_music_overwrite, list_music_overwrite)
|
||||
// rendererOff(PLAYER_EVENT_NAME.list_data_overwire, list_music_clear)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
import { LIST_IDS } from '@common/constants'
|
||||
import { markRaw, reactive } from '@common/utils/vueTools'
|
||||
|
||||
export const allMusicList: Map<string, LX.Music.MusicInfo[]> = markRaw(new Map())
|
||||
|
||||
export const defaultList = markRaw<LX.List.MyDefaultListInfo>({
|
||||
id: LIST_IDS.DEFAULT,
|
||||
name: '试听列表',
|
||||
})
|
||||
|
||||
export const loveList = markRaw<LX.List.MyLoveListInfo>({
|
||||
id: LIST_IDS.LOVE,
|
||||
name: '我的收藏',
|
||||
})
|
||||
export const tempList = markRaw<LX.List.MyTempListInfo>({
|
||||
id: LIST_IDS.TEMP,
|
||||
name: '临时列表',
|
||||
meta: {},
|
||||
})
|
||||
|
||||
export const userLists: LX.List.UserListInfo[] = reactive([])
|
||||
Reference in New Issue
Block a user