修复不同数据类型的列表id合并问题

pull/1397/head
lyswhut 2023-05-23 14:33:36 +08:00
parent a522b78496
commit 368eeed0d0
1 changed files with 9 additions and 9 deletions

View File

@ -110,10 +110,10 @@ const setRemotelList = async(socket: LX.Sync.Server.Socket, listData: LX.Sync.Li
})
})
type UserDataObj = Record<string, LX.List.UserListInfoFull>
type UserDataObj = Map<string, LX.List.UserListInfoFull>
const createUserListDataObj = (listData: LX.Sync.ListData): UserDataObj => {
const userListDataObj: UserDataObj = {}
for (const list of listData.userList) userListDataObj[list.id] = list
const userListDataObj: UserDataObj = new Map()
for (const list of listData.userList) userListDataObj.set(list.id, list)
return userListDataObj
}
@ -171,7 +171,7 @@ const mergeList = (sourceListData: LX.Sync.ListData, targetListData: LX.Sync.Lis
targetListData.userList.forEach((list, index) => {
const targetUpdateTime = list?.locationUpdateTime ?? 0
const sourceList = userListDataObj[list.id]
const sourceList = userListDataObj.get(list.id)
if (sourceList) {
sourceList.list = handleMergeList(sourceList.list, list.list, addMusicLocationType)
@ -205,7 +205,7 @@ const overwriteList = (sourceListData: LX.Sync.ListData, targetListData: LX.Sync
newListData.userList = [...sourceListData.userList]
targetListData.userList.forEach((list, index) => {
if (userListDataObj[list.id]) return
if (userListDataObj.has(list.id)) return
if (list?.locationUpdateTime) {
newListData.userList.splice(index, 0, list)
} else {
@ -367,10 +367,10 @@ const handleMergeListDataFromSnapshot = async(socket: LX.Sync.Server.Socket, sna
let newUserList: LX.List.UserListInfoFull[] = []
for (const list of localListData.userList) {
if (removedListIds.has(list.id)) continue
const remoteList = remoteUserListData[list.id]
const remoteList = remoteUserListData.get(list.id)
let newList: LX.List.UserListInfoFull
if (remoteList) {
newList = { ...list, list: mergeListDataFromSnapshot(list.list, remoteList.list, snapshotUserListData[list.id].list, addMusicLocationType) }
newList = { ...list, list: mergeListDataFromSnapshot(list.list, remoteList.list, snapshotUserListData.get(list.id)?.list ?? [], addMusicLocationType) }
} else {
newList = { ...list }
}
@ -380,8 +380,8 @@ const handleMergeListDataFromSnapshot = async(socket: LX.Sync.Server.Socket, sna
remoteListData.userList.forEach((list, index) => {
if (removedListIds.has(list.id)) return
const remoteUpdateTime = list?.locationUpdateTime ?? 0
if (localUserListData[list.id]) {
const localUpdateTime = localUserListData[list.id]?.locationUpdateTime ?? 0
if (localUserListData.has(list.id)) {
const localUpdateTime = localUserListData.get(list.id)?.locationUpdateTime ?? 0
if (localUpdateTime >= remoteUpdateTime) return
// 调整位置
const [newList] = newUserList.splice(newUserList.findIndex(l => l.id == list.id), 1)