修复同步问题

pull/1583/head
lyswhut 2023-08-29 16:10:26 +08:00
parent 7d17423e4b
commit 5cf2acfff2
3 changed files with 23 additions and 5 deletions

View File

@ -3,6 +3,7 @@
// import { sendSyncActionList } from '@main/modules/winMain' // import { sendSyncActionList } from '@main/modules/winMain'
// import { SYNC_CLOSE_CODE } from '@/constants' // import { SYNC_CLOSE_CODE } from '@/constants'
// import { SYNC_CLOSE_CODE } from '@common/constants_sync' // import { SYNC_CLOSE_CODE } from '@common/constants_sync'
import { SYNC_CLOSE_CODE } from '@common/constants_sync'
import { getUserSpace } from '@main/modules/sync/server/user' import { getUserSpace } from '@main/modules/sync/server/user'
import { handleRemoteListAction } from '@main/modules/sync/utils' import { handleRemoteListAction } from '@main/modules/sync/utils'
// import { encryptMsg } from '@/utils/tools' // import { encryptMsg } from '@/utils/tools'
@ -155,6 +156,13 @@ export const onListSyncAction = async(socket: LX.Sync.Server.Socket, action: LX.
const currentId = socket.keyInfo.clientId const currentId = socket.keyInfo.clientId
socket.broadcast((client) => { socket.broadcast((client) => {
if (client.keyInfo.clientId == currentId || !client.moduleReadys?.list || client.userInfo.name != currentUserName) return if (client.keyInfo.clientId == currentId || !client.moduleReadys?.list || client.userInfo.name != currentUserName) return
void client.remoteQueueList.onListSyncAction(action) void client.remoteQueueList.onListSyncAction(action).then(async() => {
return userSpace.listManage.updateDeviceSnapshotKey(client.keyInfo.clientId, key)
}).catch(err => {
// TODO send status
client.close(SYNC_CLOSE_CODE.failed)
// client.moduleReadys.list = false
console.log(err.message)
})
}) })
} }

View File

@ -1,3 +1,4 @@
import { SYNC_CLOSE_CODE } from '@common/constants_sync'
import { registerListActionEvent } from '../../../../utils' import { registerListActionEvent } from '../../../../utils'
import { getUserSpace } from '../../../user' import { getUserSpace } from '../../../user'
@ -11,8 +12,13 @@ const sendListAction = async(wss: LX.Sync.Server.SocketServer, action: LX.Sync.L
const key = await userSpace.listManage.createSnapshot() const key = await userSpace.listManage.createSnapshot()
for (const client of wss.clients) { for (const client of wss.clients) {
if (!client.moduleReadys?.list) continue if (!client.moduleReadys?.list) continue
void client.remoteQueueList.onListSyncAction(action).then(() => { void client.remoteQueueList.onListSyncAction(action).then(async() => {
void userSpace.listManage.updateDeviceSnapshotKey(client.keyInfo.clientId, key) return userSpace.listManage.updateDeviceSnapshotKey(client.keyInfo.clientId, key)
}).catch(err => {
// TODO send status
client.close(SYNC_CLOSE_CODE.failed)
// client.moduleReadys.list = false
console.log(err.message)
}) })
} }
} }

View File

@ -2,6 +2,7 @@
import { removeSelectModeListener, sendCloseSelectMode, sendSelectMode } from '@main/modules/winMain' import { removeSelectModeListener, sendCloseSelectMode, sendSelectMode } from '@main/modules/winMain'
import { getUserSpace, getUserConfig } from '../../../user' import { getUserSpace, getUserConfig } from '../../../user'
import { getLocalListData, setLocalListData } from '@main/modules/sync/utils' import { getLocalListData, setLocalListData } from '@main/modules/sync/utils'
import { SYNC_CLOSE_CODE } from '@common/constants_sync'
// import { LIST_IDS } from '@common/constants' // import { LIST_IDS } from '@common/constants'
// type ListInfoType = LX.List.UserListInfoFull | LX.List.MyDefaultListInfoFull | LX.List.MyLoveListInfoFull // type ListInfoType = LX.List.UserListInfoFull | LX.List.MyDefaultListInfoFull | LX.List.MyLoveListInfoFull
@ -65,12 +66,15 @@ const setLocalList = async(socket: LX.Sync.Server.Socket, listData: LX.Sync.List
const overwriteRemoteListData = async(socket: LX.Sync.Server.Socket, listData: LX.Sync.List.ListData, key: string, excludeIds: string[] = []) => { const overwriteRemoteListData = async(socket: LX.Sync.Server.Socket, listData: LX.Sync.List.ListData, key: string, excludeIds: string[] = []) => {
const action = { action: 'list_data_overwrite', data: listData } as const const action = { action: 'list_data_overwrite', data: listData } as const
const tasks: Array<Promise<void>> = [] const tasks: Array<Promise<void>> = []
const userSpace = getUserSpace(socket.userInfo.name)
socket.broadcast((client) => { socket.broadcast((client) => {
if (excludeIds.includes(client.keyInfo.clientId) || client.userInfo.name != socket.userInfo.name || !client.moduleReadys?.list) return if (excludeIds.includes(client.keyInfo.clientId) || client.userInfo.name != socket.userInfo.name || !client.moduleReadys?.list) return
tasks.push(client.remoteQueueList.onListSyncAction(action).then(async() => { tasks.push(client.remoteQueueList.onListSyncAction(action).then(async() => {
const userSpace = getUserSpace(socket.userInfo.name) return userSpace.listManage.updateDeviceSnapshotKey(client.keyInfo.clientId, key)
return userSpace.listManage.updateDeviceSnapshotKey(socket.keyInfo.clientId, key)
}).catch(err => { }).catch(err => {
// TODO send status
client.close(SYNC_CLOSE_CODE.failed)
// client.moduleReadys.list = false
console.log(err.message) console.log(err.message)
})) }))
}) })