diff --git a/lib/reducers/user-reducer.js b/lib/reducers/user-reducer.js --- a/lib/reducers/user-reducer.js +++ b/lib/reducers/user-reducer.js @@ -224,6 +224,24 @@ .flat(); } +function discardKeyserverUsernames( + newUserInfos: UserInfos, + stateUserInfos: UserInfos, +): UserInfos { + let result: UserInfos = {}; + for (const id in newUserInfos) { + const username = stateUserInfos[id] ? stateUserInfos[id].username : null; + result = { + ...result, + [id]: { + ...newUserInfos[id], + username, + }, + }; + } + return result; +} + type ReduceUserInfosResult = [ UserStore, $ReadOnlyArray, @@ -314,10 +332,15 @@ if (keyserverID !== authoritativeKeyserverID()) { return [state, [], []]; } - const newUserInfos: UserInfos = _keyBy(userInfo => userInfo.id)( + const keyserverUserInfos: UserInfos = _keyBy(userInfo => userInfo.id)( action.payload.userInfos, ); + const newUserInfos = discardKeyserverUsernames( + keyserverUserInfos, + state.userInfos, + ); + const userStoreOps: $ReadOnlyArray = convertUserInfosToReplaceUserOps(newUserInfos); const processedUserInfos: UserInfos = processUserStoreOps(