重构数据同步功能,新增客户端模式

This commit is contained in:
lyswhut
2023-02-28 18:01:56 +08:00
parent b42092884e
commit 3b70acc3ca
43 changed files with 2232 additions and 1249 deletions
+16 -1
View File
@@ -499,6 +499,11 @@ declare global {
*/
'tray.themeId': number
/**
* 同步服务模式
*/
'sync.mode': 'server' | 'client'
/**
* 是否启用同步服务
*/
@@ -507,7 +512,17 @@ declare global {
/**
* 同步服务端口号
*/
'sync.port': '23332' | string
'sync.server.port': '23332' | string
/**
* 最大备份快照数
*/
'sync.server.maxSsnapshotNum': number
/**
* 同步服务地址
*/
'sync.client.host': string
/**
* 是否在离开搜索界面时自动清空搜索框
+48 -10
View File
@@ -1,10 +1,15 @@
declare namespace LX {
namespace Sync {
interface Enable {
interface EnableServer {
enable: boolean
port: string
}
interface EnableClient {
enable: boolean
host: string
authCode?: string
}
interface SyncActionBase <A> {
action: A
@@ -14,14 +19,17 @@ declare namespace LX {
}
type SyncAction<A, D = undefined> = D extends undefined ? SyncActionBase<A> : SyncActionData<A, D>
type SyncMainWindowActions = SyncAction<'select_mode', KeyInfo>
type SyncMainWindowActions = SyncAction<'select_mode', string>
| SyncAction<'close_select_mode'>
| SyncAction<'status', Status>
| SyncAction<'client_status', ClientStatus>
| SyncAction<'server_status', ServerStatus>
type SyncServiceActions = SyncAction<'select_mode', Mode>
| SyncAction<'get_status'>
| SyncAction<'get_server_status'>
| SyncAction<'get_client_status'>
| SyncAction<'generate_code'>
| SyncAction<'enable', Enable>
| SyncAction<'enable_server', EnableServer>
| SyncAction<'enable_client', EnableClient>
type ActionList = SyncAction<'list_data_overwrite', LX.List.ListActionDataOverwrite>
| SyncAction<'list_create', LX.List.ListActionAdd>
@@ -36,25 +44,55 @@ declare namespace LX {
| SyncAction<'list_music_overwrite', LX.List.ListActionMusicOverwrite>
| SyncAction<'list_music_clear', LX.List.ListActionMusicClear>
type ActionSync = SyncAction<'list:sync:list_sync_get_md5', string>
| SyncAction<'list:sync:list_sync_get_list_data', ListData>
| SyncAction<'list:sync:list_sync_get_sync_mode', Mode>
| SyncAction<'list:sync:action', ActionList>
// | SyncAction<'finished'>
type ActionSyncType = Actions<ActionSync>
type ActionSyncSend = SyncAction<'list:sync:list_sync_get_md5'>
| SyncAction<'list:sync:list_sync_get_list_data'>
| SyncAction<'list:sync:list_sync_get_sync_mode'>
| SyncAction<'list:sync:list_sync_set_data', LX.Sync.ListData>
| SyncAction<'list:sync:action', ActionList>
| SyncAction<'list:sync:finished'>
type ActionSyncSendType = Actions<ActionSyncSend>
interface List {
action: string
data: any
}
interface Status {
interface ServerStatus {
status: boolean
message: string
address: string[]
code: string
devices: KeyInfo[]
devices: ServerKeyInfo[]
}
interface KeyInfo {
interface ClientStatus {
status: boolean
message: string
address: string[]
}
interface ClientKeyInfo {
clientId: string
key: string
serverName: string
}
interface ServerKeyInfo {
clientId: string
key: string
deviceName: string
connectionTime?: number
lastSyncDate?: number
snapshotKey: string
isMobile: boolean
}
type ListData = Omit<LX.List.ListDataFull, 'tempList'>
@@ -65,7 +103,7 @@ declare namespace LX {
| 'overwrite_remote_local'
| 'overwrite_local_remote_full'
| 'overwrite_remote_local_full'
| 'none'
// | 'none'
| 'cancel'
}
+5
View File
@@ -5,3 +5,8 @@ type DeepPartial<T> = {
}
type Modify<T, R> = Omit<T, keyof R> & R
// type UndefinedOrNever = undefined
type Actions<T extends { action: string, data?: any }> = {
[U in T as U['action']]: 'data' extends keyof U ? U['data'] : undefined
}