From abe62d84edb41546f85e45d01253906bcd03178a Mon Sep 17 00:00:00 2001 From: lyswhut Date: Mon, 4 Sep 2023 22:55:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=90=8C=E6=AD=A5=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=88=97=E8=A1=A8=E5=85=83=E6=95=B0=E6=8D=AE=E5=90=88?= =?UTF-8?q?=E5=B9=B6=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sync/server/modules/list/sync/sync.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/modules/sync/server/modules/list/sync/sync.ts b/src/main/modules/sync/server/modules/list/sync/sync.ts index c287c245..ddd2cf9b 100644 --- a/src/main/modules/sync/server/modules/list/sync/sync.ts +++ b/src/main/modules/sync/server/modules/list/sync/sync.ts @@ -316,6 +316,12 @@ const checkListLatest = async(socket: LX.Sync.Server.Socket) => { if (latest && userCurrentListInfoKey != currentListInfoKey) await userSpace.listManage.updateDeviceSnapshotKey(socket.keyInfo.clientId, currentListInfoKey) return latest } +const selectData = (snapshot: T | null, local: T, remote: T): T => { + return snapshot == local + ? remote + // ? (snapshot == remote ? snapshot as T : remote) + : local +} const handleMergeListDataFromSnapshot = async(socket: LX.Sync.Server.Socket, snapshot: LX.Sync.List.ListData) => { if (await checkListLatest(socket)) return @@ -348,7 +354,15 @@ const handleMergeListDataFromSnapshot = async(socket: LX.Sync.Server.Socket, sna const remoteList = remoteUserListData.get(list.id) let newList: LX.List.UserListInfoFull if (remoteList) { - newList = { ...list, list: mergeListDataFromSnapshot(list.list, remoteList.list, snapshotUserListData.get(list.id)?.list ?? [], addMusicLocationType) } + const snapshotList = snapshotUserListData.get(list.id) ?? { name: null, source: null, sourceListId: null, list: [] } + newList = { + id: list.id, + locationUpdateTime: list.locationUpdateTime, + name: selectData(snapshotList.name, list.name, remoteList.name), + source: selectData(snapshotList.source, list.source, remoteList.source), + sourceListId: selectData(snapshotList.sourceListId, list.sourceListId, remoteList.sourceListId), + list: mergeListDataFromSnapshot(list.list, remoteList.list, snapshotList.list, addMusicLocationType), + } } else { newList = { ...list } }