新增同步功能对“不喜欢歌曲”列表的同步
This commit is contained in:
@@ -1,48 +1,51 @@
|
||||
// import { toRaw } from '@common/utils/vueTools'
|
||||
import { DISLIKE_EVENT_NAME } from '@common/ipcNames'
|
||||
import { rendererInvoke, rendererOff, rendererOn } from '@common/rendererIpc'
|
||||
import { action } from '@renderer/store/dislikeList'
|
||||
import {
|
||||
getDislikeListInfo,
|
||||
addDislikeInfo as addDislikeInfoRemote,
|
||||
overwirteDislikeInfo as overwirteDislikeInfoRemote,
|
||||
// updateDislikeInfo as updateDislikeInfoRemote,
|
||||
// removeDislikeInfo as removeDislikeInfoRemote,
|
||||
// clearDislikeInfo as clearDislikeInfoRemote,
|
||||
} from '@renderer/utils/ipc'
|
||||
|
||||
|
||||
export const initDislikeInfo = async() => {
|
||||
action.initDislikeInfo(await getDislikeListInfo())
|
||||
action.initDislikeInfo(await rendererInvoke<LX.Dislike.DislikeInfo>(DISLIKE_EVENT_NAME.get_dislike_music_infos))
|
||||
}
|
||||
|
||||
export const addDislikeInfo = async(infos: LX.Dislike.DislikeMusicInfo[]) => {
|
||||
await addDislikeInfoRemote(infos)
|
||||
return action.addDislikeInfo(infos)
|
||||
}
|
||||
|
||||
export const overwirteDislikeInfo = async(rules: string) => {
|
||||
await overwirteDislikeInfoRemote(rules)
|
||||
return action.overwirteDislikeInfo(rules)
|
||||
}
|
||||
|
||||
// export const updateDislikeInfo = async(info: LX.Dislike.ListItem) => {
|
||||
// await updateDislikeInfoRemote([toRaw(info)])
|
||||
// action.updateDislikeInfo(info)
|
||||
// }
|
||||
|
||||
// export const removeDislikeInfo = async(ids: string[]) => {
|
||||
// await removeDislikeInfoRemote(toRaw(ids))
|
||||
// action.removeDislikeInfo(ids)
|
||||
// }
|
||||
|
||||
|
||||
// export const clearDislikeInfo = async() => {
|
||||
// await clearDislikeInfoRemote()
|
||||
// action.clearDislikeInfo()
|
||||
// }
|
||||
|
||||
|
||||
export const hasDislike = (info: LX.Music.MusicInfo | LX.Download.ListItem | null) => {
|
||||
if (!info) return false
|
||||
return action.hasDislike(info)
|
||||
}
|
||||
|
||||
export const addDislikeInfo = async(infos: LX.Dislike.DislikeMusicInfo[]) => {
|
||||
await rendererInvoke<LX.Dislike.DislikeMusicInfo[]>(DISLIKE_EVENT_NAME.add_dislike_music_infos, infos)
|
||||
}
|
||||
|
||||
export const overwirteDislikeInfo = async(rules: string) => {
|
||||
await rendererInvoke<string>(DISLIKE_EVENT_NAME.overwrite_dislike_music_infos, rules)
|
||||
}
|
||||
|
||||
export const clearDislikeInfo = async() => {
|
||||
await rendererInvoke(DISLIKE_EVENT_NAME.clear_dislike_music_infos)
|
||||
}
|
||||
|
||||
|
||||
const noop = () => {}
|
||||
|
||||
export const registerRemoteDislikeAction = (onListChanged: (listIds: string[]) => void = noop) => {
|
||||
const add_dislike_music_infos = ({ params: datas }: LX.IpcRendererEventParams<LX.Dislike.DislikeMusicInfo[]>) => {
|
||||
action.addDislikeInfo(datas)
|
||||
}
|
||||
const overwrite_dislike_music_infos = ({ params: datas }: LX.IpcRendererEventParams<LX.Dislike.DislikeRules>) => {
|
||||
action.overwirteDislikeInfo(datas)
|
||||
}
|
||||
const clear_dislike_music_infos = () => {
|
||||
return action.clearDislikeInfo()
|
||||
}
|
||||
|
||||
rendererOn(DISLIKE_EVENT_NAME.add_dislike_music_infos, add_dislike_music_infos)
|
||||
rendererOn(DISLIKE_EVENT_NAME.overwrite_dislike_music_infos, overwrite_dislike_music_infos)
|
||||
rendererOn(DISLIKE_EVENT_NAME.clear_dislike_music_infos, clear_dislike_music_infos)
|
||||
|
||||
return () => {
|
||||
rendererOff(DISLIKE_EVENT_NAME.add_dislike_music_infos, add_dislike_music_infos)
|
||||
rendererOff(DISLIKE_EVENT_NAME.overwrite_dislike_music_infos, overwrite_dislike_music_infos)
|
||||
rendererOff(DISLIKE_EVENT_NAME.clear_dislike_music_infos, clear_dislike_music_infos)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import { play, playList } from '@renderer/core/player'
|
||||
import { onBeforeUnmount } from '@common/utils/vueTools'
|
||||
import { appSetting } from '@renderer/store/setting'
|
||||
import { playMusicInfo } from '@renderer/store/player/state'
|
||||
import { initDislikeInfo } from '@renderer/core/dislikeList'
|
||||
import { initDislikeInfo, registerRemoteDislikeAction } from '@renderer/core/dislikeList'
|
||||
|
||||
const initPrevPlayInfo = async() => {
|
||||
const info = await getPlayInfo()
|
||||
@@ -33,9 +33,11 @@ export default () => {
|
||||
const initUserApi = useInitUserApi()
|
||||
|
||||
let unregister: null | (() => void) = null
|
||||
let unregisterDislikeEvent: null | (() => void) = null
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
if (unregister) unregister()
|
||||
if (unregisterDislikeEvent) unregisterDislikeEvent()
|
||||
})
|
||||
|
||||
return async() => {
|
||||
@@ -49,6 +51,7 @@ export default () => {
|
||||
window.app_event.myListUpdate(ids)
|
||||
})
|
||||
window.lxData.userLists = await getUserLists() // 获取用户列表
|
||||
unregisterDislikeEvent = registerRemoteDislikeAction()
|
||||
await initDislikeInfo() // 获取不喜欢列表
|
||||
await initPrevPlayInfo().catch(err => {
|
||||
log.error(err)
|
||||
|
||||
@@ -9,7 +9,8 @@ export default () => {
|
||||
// console.log(event)
|
||||
switch (event.action) {
|
||||
case 'select_mode':
|
||||
sync.deviceName = event.data
|
||||
sync.deviceName = event.data.deviceName
|
||||
sync.type = event.data.type
|
||||
sync.isShowSyncMode = true
|
||||
break
|
||||
case 'close_select_mode':
|
||||
|
||||
Reference in New Issue
Block a user