fix(names): fix loading friend names and wrong isDisplayNameDefault

This commit is contained in:
Christopher Astfalk
2021-05-28 17:34:18 +02:00
parent 89479f788f
commit 878765b070
3 changed files with 64 additions and 6 deletions
+6 -3
View File
@@ -3,7 +3,6 @@ import { selectFolderForAssetType } from '../bundles/inventory'
import {
displayNamesStartLoading,
displayNamesLoaded,
selectNames,
selectIdOfNamesToLoad,
selectDisplayNamesURL,
selectOwnAvatarName,
@@ -95,11 +94,15 @@ export function getAllFriendsDisplayNames () {
return (dispatch, getState) => {
const state = getState()
const names = selectNames(state)
const friendsIds = selectFriends(state)
.map(friend => friend.id)
.concat([selectAgentId(state)]) // Add self
.filter(id => !(id in names) || !names[id].willHaveDisplayName()) // unknown only
.filter(id => { // unknown only
const name = selectAvatarNameById(state, id)
return !name ||
!name.didLoadDisplayName ||
!name.isLoadingDisplayName
})
dispatch(loadDisplayNames(friendsIds))
}
+47
View File
@@ -309,6 +309,53 @@ describe('actions', () => {
expect(selectAvatarDisplayName(store.getState(), 'e856f8e7-f774-4040-8392-df4185fa37e4'))
.toBe('Andromeda')
})
it('should handle displayNames that are wrongly marked as default', async () => {
const { store, setMark, getDiff } = await createTestStore()
store.dispatch(addMissing({
id: 'e856f8e7-f774-4040-8392-df4185fa37e4',
fallback: 'Andromeda'
}))
store.dispatch(displayNamesStartLoading([
'e856f8e7-f774-4040-8392-df4185fa37e4'
]))
setMark('A')
store.dispatch(displayNamesLoaded(
[
{
id: 'e856f8e7-f774-4040-8392-df4185fa37e4',
username: 'andromeda.resident',
display_name: 'Andro',
display_name_next_update: 0,
legacy_first_name: 'andromeda',
legacy_last_name: 'resident',
is_display_name_default: true
}
],
[],
[]
))
expect(getDiff('A')).toEqual({
names: {
names: {
entities: {
'e856f8e7-f774-4040-8392-df4185fa37e4': {
displayName: 'Andro',
didLoadDisplayName: true,
isLoadingDisplayName: false
}
}
}
}
})
expect(selectAvatarDisplayName(store.getState(), 'e856f8e7-f774-4040-8392-df4185fa37e4'))
.toBe('Andro (Andromeda)')
})
})
})
+11 -3
View File
@@ -123,15 +123,23 @@ const nameSlice = createSlice({
}
for (const agent of action.payload.agents) {
const firstName = cleanName(agent.legacy_first_name)
const lastName = cleanName(agent.legacy_last_name)
changes.push({
id: agent.id,
changes: {
displayName: agent.display_name,
firstName: cleanName(agent.legacy_first_name),
lastName: cleanName(agent.legacy_last_name),
firstName,
lastName,
isLoadingDisplayName: false,
didLoadDisplayName: true,
isDisplayNameDefault: agent.is_display_name_default
isDisplayNameDefault: agent.is_display_name_default && (
agent.display_name.toLowerCase() === `${firstName} ${lastName}`.toLowerCase() ||
(
agent.display_name.toLowerCase() === firstName.toLowerCase() &&
lastName === 'Resident'
)
)
}
})
}