mirror of
https://github.com/Terreii/andromeda-viewer.git
synced 2026-08-14 00:57:49 +00:00
fix(names): fix loading friend names and wrong isDisplayNameDefault
This commit is contained in:
@@ -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))
|
||||
}
|
||||
|
||||
@@ -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
@@ -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'
|
||||
)
|
||||
)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user