From 8c89dfc93febed164bde1290fa3500461c153727 Mon Sep 17 00:00:00 2001 From: tudor <7089284+tudddorrr@users.noreply.github.com> Date: Mon, 28 Oct 2024 23:12:46 +0000 Subject: [PATCH] always show latest created alias --- src/components/PlayerAliases.tsx | 26 ++++++++++++++----- .../__tests__/PlayerAliases.test.tsx | 8 +++--- src/pages/PlayerProfile.tsx | 2 +- 3 files changed, 24 insertions(+), 12 deletions(-) diff --git a/src/components/PlayerAliases.tsx b/src/components/PlayerAliases.tsx index 43f16fc2..8753fd57 100644 --- a/src/components/PlayerAliases.tsx +++ b/src/components/PlayerAliases.tsx @@ -3,6 +3,8 @@ import Tippy from '@tippyjs/react' import useSortedItems from '../utils/useSortedItems' import { PlayerAlias } from '../entities/playerAlias' import taloIcon from '../assets/talo-service.svg' +import clsx from 'clsx' +import { useCallback, useMemo } from 'react' type PlayerAliasesProps = { aliases: PlayerAlias[] @@ -11,9 +13,9 @@ type PlayerAliasesProps = { export default function PlayerAliases({ aliases }: PlayerAliasesProps) { - const sortedAliases = useSortedItems(aliases, 'updatedAt') + const sortedAliases = useSortedItems(aliases, 'createdAt') - const getIcon = (alias: PlayerAlias) => { + const getIcon = useCallback((alias: PlayerAlias) => { /* v8ignore next */ switch (alias.service) { case 'steam': return @@ -22,18 +24,28 @@ export default function PlayerAliases({ case 'talo': return Talo default: return } - } + }, []) - if (aliases.length === 0) return 'None' + const alias = useMemo(() => { + return sortedAliases.at(0) + }, [sortedAliases]) + + if (!alias) return 'None' return (
- {sortedAliases[0].service}

}> - {getIcon(sortedAliases[0])} + + {alias.service} +

+ } + > + {getIcon(alias)}
- {sortedAliases[0].identifier} + {alias.identifier}
{sortedAliases.length > 1 && diff --git a/src/components/__tests__/PlayerAliases.test.tsx b/src/components/__tests__/PlayerAliases.test.tsx index 61f24c27..5fdfe655 100644 --- a/src/components/__tests__/PlayerAliases.test.tsx +++ b/src/components/__tests__/PlayerAliases.test.tsx @@ -14,11 +14,11 @@ describe('', () => { expect(screen.getByText(aliases[0].identifier)).toBeInTheDocument() }) - it('should render the first alias and an indicator for how many more', () => { + it('should render the latest alias and an indicator for how many more', () => { const aliases: PlayerAlias[] = [ - playerAliasMock({ service: PlayerAliasService.STEAM, identifier: 'yxre12' }), - playerAliasMock({ service: PlayerAliasService.USERNAME, identifier: 'ryet12' }), - playerAliasMock({ service: PlayerAliasService.EPIC, identifier: 'epic_23rd' }) + playerAliasMock({ service: PlayerAliasService.STEAM, identifier: 'yxre12', createdAt: '2024-10-28 10:00:00' }), + playerAliasMock({ service: PlayerAliasService.USERNAME, identifier: 'ryet12', createdAt: '2024-10-27 10:00:00' }), + playerAliasMock({ service: PlayerAliasService.EPIC, identifier: 'epic_23rd', createdAt: '2024-10-26 10:00:00' }) ] render() diff --git a/src/pages/PlayerProfile.tsx b/src/pages/PlayerProfile.tsx index a752c9a6..4cccff9f 100644 --- a/src/pages/PlayerProfile.tsx +++ b/src/pages/PlayerProfile.tsx @@ -54,7 +54,7 @@ export default function PlayerProfile() { const [player] = usePlayer() const navigate = useNavigate() - const sortedAliases = useSortedItems(player?.aliases ?? [], 'updatedAt') + const sortedAliases = useSortedItems(player?.aliases ?? [], 'createdAt') const activeGame = useRecoilValue(activeGameState) as SelectedActiveGame const user = useRecoilValue(userState) as AuthedUser