From a298061098273eea5ec5cdb807d3296b5e7e6cce Mon Sep 17 00:00:00 2001 From: chylex Date: Mon, 5 Feb 2018 14:31:37 +0100 Subject: [PATCH] Fix mismatched user IDs when combining completely different archives Closes #17 --- src/tracker/savefile.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/tracker/savefile.js b/src/tracker/savefile.js index a691f49..879840e 100644 --- a/src/tracker/savefile.js +++ b/src/tracker/savefile.js @@ -211,8 +211,10 @@ SAVEFILE.prototype.countMessages = function(){ }; SAVEFILE.prototype.combineWith = function(obj){ + var userMap = {}; + for(var userId in obj.meta.users){ - this.findOrRegisterUser(userId, obj.meta.users[userId].name); + userMap[obj.meta.userindex.findIndex(id => id == userId)] = this.findOrRegisterUser(userId, obj.meta.users[userId].name); } for(var channelId in obj.meta.channels){ @@ -221,8 +223,14 @@ SAVEFILE.prototype.combineWith = function(obj){ } for(var channelId in obj.data){ - for(var messageId in obj.data[channelId]){ - this.addMessage(channelId, messageId, obj.data[channelId][messageId]); + var oldChannel = obj.data[channelId]; + + for(var messageId in oldChannel){ + var oldMessage = oldChannel[messageId]; + var oldUser = oldMessage.u; + + oldMessage.u = userMap[oldUser] || oldUser; + this.addMessage(channelId, messageId, oldMessage); } } };