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

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
+4
View File
@@ -61,10 +61,14 @@ export const File = {
listDir: 'list',
listSnapshotDir: 'snapshot',
listSnapshotInfoJSON: 'snapshotInfo.json',
dislikeDir: 'dislike',
dislikeSnapshotDir: 'snapshot',
dislikeSnapshotInfoJSON: 'snapshotInfo.json',
syncAuthKeysJSON: 'syncAuthKey.json',
} as const
export const FeaturesList = [
'list',
'dislike',
] as const
+7 -4
View File
@@ -36,6 +36,12 @@ const modules = {
list_music_check_exist: 'list_music_check_exist',
list_music_get_list_ids: 'list_music_get_list_ids',
},
dislike: {
get_dislike_music_infos: 'get_dislike_music_infos',
add_dislike_music_infos: 'add_dislike_music_infos',
overwrite_dislike_music_infos: 'overwrite_dislike_music_infos',
clear_dislike_music_infos: 'clear_dislike_music_infos',
},
winMain: {
focus: 'focus',
close: 'close',
@@ -126,10 +132,6 @@ const modules = {
clear_music_url: 'clear_music_url',
get_music_url_count: 'get_music_url_count',
get_dislike_music_infos: 'get_dislike_music_infos',
add_dislike_music_infos: 'add_dislike_music_infos',
overwrite_dislike_music_infos: 'overwrite_dislike_music_infos',
sync_action: 'sync_action',
sync_get_server_devices: 'sync_get_server_devices',
sync_remove_server_device: 'sync_remove_server_device',
@@ -186,6 +188,7 @@ for (const moduleName of Object.keys(modules) as Array<keyof typeof modules>) {
export const CMMON_EVENT_NAME = modules.common
export const PLAYER_EVENT_NAME = modules.player
export const DISLIKE_EVENT_NAME = modules.dislike
export const WIN_MAIN_RENDERER_EVENT_NAME = modules.winMain
export const WIN_LYRIC_RENDERER_EVENT_NAME = modules.winLyric
export const HOTKEY_RENDERER_EVENT_NAME = modules.hotKey
+3 -1
View File
@@ -23,13 +23,15 @@ declare namespace LX {
singer: string
}
type DislikeRules = string
interface DislikeInfo {
// musicIds: Set<string>
names: Set<string>
musicNames: Set<string>
singerNames: Set<string>
// list: LX.Dislike.ListItem[]
rules: string
rules: DislikeRules
}
}
}
+30
View File
@@ -0,0 +1,30 @@
declare namespace LX {
namespace Sync {
namespace Dislike {
interface ListInfo {
lastSyncDate?: number
snapshotKey: string
}
interface SyncActionBase <A> {
action: A
}
interface SyncActionData<A, D> extends SyncActionBase<A> {
data: D
}
type SyncAction<A, D = undefined> = D extends undefined ? SyncActionBase<A> : SyncActionData<A, D>
type ActionList = SyncAction<'dislike_data_overwrite', LX.Dislike.DislikeRules>
| SyncAction<'dislike_music_add', LX.Dislike.DislikeMusicInfo[]>
| SyncAction<'dislike_music_clear'>
type SyncMode = 'merge_local_remote'
| 'merge_remote_local'
| 'overwrite_local_remote'
| 'overwrite_remote_local'
// | 'none'
| 'cancel'
}
}
}
+11 -2
View File
@@ -19,12 +19,20 @@ declare namespace LX {
}
type SyncAction<A, D = undefined> = D extends undefined ? SyncActionBase<A> : SyncActionData<A, D>
type SyncMainWindowActions = SyncAction<'select_mode', string>
interface ModeTypes {
list: LX.Sync.List.SyncMode
dislike: LX.Sync.Dislike.SyncMode
}
type ModeType = { [K in keyof ModeTypes]: { type: K, mode: ModeTypes[K] } }[keyof ModeTypes]
type SyncMainWindowActions = SyncAction<'select_mode', { deviceName: string, type: keyof ModeTypes }>
| SyncAction<'close_select_mode'>
| SyncAction<'client_status', ClientStatus>
| SyncAction<'server_status', ServerStatus>
type SyncServiceActions = SyncAction<'select_mode', LX.Sync.List.SyncMode>
type SyncServiceActions = SyncAction<'select_mode', ModeType>
| SyncAction<'get_server_status'>
| SyncAction<'get_client_status'>
| SyncAction<'generate_code'>
@@ -64,6 +72,7 @@ declare namespace LX {
type ServerType = 'desktop-app' | 'server'
interface EnabledFeatures {
list: boolean
dislike: boolean
}
type SupportedFeatures = Partial<{ [k in keyof EnabledFeatures]: number }>
}