Skip to content

Commit

Permalink
Points stop hitting metadata foreach leaderboard address (#1212)
Browse files Browse the repository at this point in the history
Co-authored-by: Bruno Barbieri <1247834+brunobar79@users.noreply.github.com>
Co-authored-by: Daniel Sinclair <d@niel.nyc>
  • Loading branch information
3 people authored Dec 18, 2023
1 parent 209a35a commit 33037d7
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 11 deletions.
4 changes: 3 additions & 1 deletion src/entries/popup/components/WalletAvatar/WalletAvatar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { Avatar } from '../../components/Avatar/Avatar';
import { useAvatar } from '../../hooks/useAvatar';

export function WalletAvatar({
avatarUrl,
addressOrName,
size,
emojiSize,
Expand All @@ -15,6 +16,7 @@ export function WalletAvatar({
emojiPaddingTop,
boxShadow,
}: {
avatarUrl?: string;
addressOrName?: string;
size: number;
emojiSize?: TextStyles['fontSize'];
Expand All @@ -24,7 +26,7 @@ export function WalletAvatar({
emojiPaddingTop?: BoxStyles['paddingTop'];
boxShadow?: BoxStyles['boxShadow'];
}) {
const { data: avatar } = useAvatar({ addressOrName });
const { data: avatar } = useAvatar({ addressOrName, avatarUrl });

return (
<AccentColorProvider color={avatar?.color || '#000000'}>
Expand Down
16 changes: 13 additions & 3 deletions src/entries/popup/hooks/useAvatar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,14 @@ import { fetchDominantColor } from './useDominantColor';

const fetchWalletAvatar = async ({
addressOrName,
avatarUrl,
}: {
addressOrName: string;
avatarUrl?: string;
}): Promise<WalletAvatar> => {
const { setWalletAvatar } = walletAvatarStore.getState();

const ensAvatar = await resolveEnsAvatar({ addressOrName });
const ensAvatar = avatarUrl || (await resolveEnsAvatar({ addressOrName }));
let correctEnsAvatar = true;
let dominantColor = null;
try {
Expand All @@ -36,13 +38,21 @@ const fetchWalletAvatar = async ({
return avatar;
};

export function useAvatar({ addressOrName }: { addressOrName?: string }) {
export function useAvatar({
addressOrName,
avatarUrl,
}: {
addressOrName?: string;
avatarUrl?: string;
}) {
const { walletAvatar } = useWalletAvatarStore();

return useQuery(
['walletAvatar', addressOrName],
async () =>
addressOrName ? fetchWalletAvatar({ addressOrName }) : undefined,
addressOrName
? fetchWalletAvatar({ addressOrName, avatarUrl })
: undefined,
{
enabled: !!addressOrName,
initialData: () => {
Expand Down
15 changes: 8 additions & 7 deletions src/entries/popup/pages/home/Points/PointsDashboard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@
import { formatDistanceToNowStrict } from 'date-fns';
import { MotionProps, motion } from 'framer-motion';
import { PropsWithChildren, useEffect, useReducer } from 'react';
import { Address } from 'wagmi';

import { i18n } from '~/core/languages';
import { useCurrentAddressStore } from '~/core/state';
import { useCurrentThemeStore } from '~/core/state/currentSettings/currentTheme';
import { truncateAddress } from '~/core/utils/address';
import { copy } from '~/core/utils/copy';
import { formatDate } from '~/core/utils/formatDate';
import { createNumberFormatter } from '~/core/utils/formatNumber';
import { formatNumber } from '~/core/utils/formatNumber';
import {
Box,
Inline,
Expand All @@ -27,10 +29,6 @@ import { WalletAvatar } from '~/entries/popup/components/WalletAvatar/WalletAvat

import { usePoints } from './usePoints';

const { format: formatNumber } = createNumberFormatter({
maximumSignificantDigits: 8,
});

function Card({
children,
...props
Expand Down Expand Up @@ -129,7 +127,7 @@ function Leaderboard() {
<Stack separator={<Separator color="separatorTertiary" />} space="12px">
{leaderboard.accounts
?.slice(0, 100)
.map(({ address, earnings }, index) => (
.map(({ address, earnings, ens, avatarURL }, index) => (
<Inline
key={address}
wrap={false}
Expand All @@ -140,10 +138,13 @@ function Leaderboard() {
<Inline wrap={false} space="12px" alignVertical="center">
<WalletAvatar
size={32}
avatarUrl={avatarURL}
addressOrName={address}
emojiSize="16pt"
/>
<AddressOrEns address={address} size="14pt" weight="bold" />
<TextOverflow size="14pt" weight="bold">
{ens || truncateAddress(address as Address)}
</TextOverflow>
</Inline>
<LeaderboardPositionNumberDisplay position={index + 1}>
{formatNumber(earnings.total)}
Expand Down

0 comments on commit 33037d7

Please sign in to comment.