新增同步功能对“不喜欢歌曲”列表的同步

This commit is contained in:
lyswhut
2023-09-05 23:11:09 +08:00
parent fc03cd77fc
commit b1f9e525ab
62 changed files with 1275 additions and 314 deletions
+39 -36
View File
@@ -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)
}
}
+4 -1
View File
@@ -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)
+2 -1
View File
@@ -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':