diff --git a/webapp/channels/src/packages/mattermost-redux/src/reducers/entities/users.test.ts b/webapp/channels/src/packages/mattermost-redux/src/reducers/entities/users.test.ts index 4610e9b1c01..7e88a27b8a6 100644 --- a/webapp/channels/src/packages/mattermost-redux/src/reducers/entities/users.test.ts +++ b/webapp/channels/src/packages/mattermost-redux/src/reducers/entities/users.test.ts @@ -746,6 +746,26 @@ describe('Reducers.users', () => { }); }); + test(`should remove remote_id when not set anymore (${actionType})`, () => { + const user1 = TestHelper.getUserMock({id: 'user_id1', remote_id: 'abcdef'}); + const user1WithoutRemoteId = TestHelper.getUserMock({id: 'user_id1'}); + + const state = deepFreezeAndThrowOnMutation({ + profiles: { + [user1.id]: user1, + }, + }); + + const nextState = reducer(state, { + type: actionType, + data: user1WithoutRemoteId, + }); + + expect(nextState.profiles).toEqual({ + [user1.id]: user1WithoutRemoteId, + }); + }); + test(`should not overwrite unsanitized data with sanitized data (${actionType})`, () => { const user1 = TestHelper.getUserMock({ id: 'user_id1', diff --git a/webapp/channels/src/packages/mattermost-redux/src/reducers/entities/users.ts b/webapp/channels/src/packages/mattermost-redux/src/reducers/entities/users.ts index d504bb28eac..b3a4aac89ac 100644 --- a/webapp/channels/src/packages/mattermost-redux/src/reducers/entities/users.ts +++ b/webapp/channels/src/packages/mattermost-redux/src/reducers/entities/users.ts @@ -169,6 +169,11 @@ function receiveUserProfile(state: IDMappedObjects, received: UserP ...received, }; + // If there was a remote_id but not anymore, remove it + if (existing.remote_id && !received.remote_id) { + delete merged.remote_id; + } + // MM-53377: // For non-admin users, certain API responses don't return details for the current user that would be sanitized // out for others. This currently includes: