Skip to content

Commit

Permalink
feat: add logos mapping
Browse files Browse the repository at this point in the history
  • Loading branch information
icfor committed Apr 16, 2024
1 parent 0134827 commit 2c72716
Show file tree
Hide file tree
Showing 8 changed files with 39 additions and 7 deletions.
Binary file added public/chains/bonus-block.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/chains/inf-stones.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/chains/mech-cap.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/chains/stake-lab.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
11 changes: 9 additions & 2 deletions src/features/staking/components/delegation-details.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,10 @@ const DelegationRowBase = ({
}
}, [validatorAddress, staking]);

const logo = useValidatorLogo(validator?.description.identity);
const logo = useValidatorLogo(
validator?.description.identity,
validator?.operatorAddress,
);

const floatingDropdown = (isMobile: boolean) => (
<FloatingDropdown
Expand Down Expand Up @@ -266,7 +269,11 @@ const UnbondingRow = ({
}: UnbondingRowProps) => {
const { staking } = stakingRef;

const logo = useValidatorLogo(validator?.description.identity);
const logo = useValidatorLogo(
validator?.description.identity,
validator?.operatorAddress,
);

const validatorAddress = unbonding.validator;

useEffect(() => {
Expand Down
5 changes: 4 additions & 1 deletion src/features/staking/components/validator-page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,10 @@ export default function ValidatorPage() {
ReturnType<typeof getValidatorDetailsAction>
> | null>(null);

const logo = useValidatorLogo(validatorDetails?.description.identity);
const logo = useValidatorLogo(
validatorDetails?.description.identity,
validatorDetails?.operatorAddress,
);

useEffect(() => {
(async () => {
Expand Down
2 changes: 1 addition & 1 deletion src/features/staking/components/validators-table.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ const ValidatorRow = ({
validator,
}: ValidatorItemProps) => {
const { identity } = validator.description;
const logo = useValidatorLogo(identity);
const logo = useValidatorLogo(identity, validator.operatorAddress);

const votingPowerPerc = getVotingPowerPerc(validator?.tokens, staking.state);
const votingPowerPercStr = formatVotingPowerPerc(votingPowerPerc);
Expand Down
28 changes: 25 additions & 3 deletions src/features/staking/hooks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,40 @@ import { defaultAvatar } from "@/constants";

import { keybaseClient } from "./lib/utils/keybase-client";

export const useValidatorLogo = (identity?: string) => {
const fallbackLogoMap: Record<string, string | undefined> = {
xionvaloper1mq85keggvh67m37035mnncsqjnpkmunl6s2w56: "/chains/bonus-block.png",
xionvaloper1sprpvyqln2vxshq8c5jt3dshn480rfeelupqrj: "/chains/inf-stones.png",
xionvaloper1t4yes7c20hhga3nhqylnyq9kn5ja8t7c6ay45c: "/chains/mech-cap.png",
xionvaloper1ypwfnfuldmlp9u8asqzz6qx29p0utqzer5678k: "/chains/stake-lab.png",
};

export const useValidatorLogo = (
identity?: string,
operatorAddress?: string,
) => {
const [logo, setLogo] = useState<null | string>(null);

useEffect(() => {
(async () => {
if (identity) {
const logoResponse = await keybaseClient.getIdentityLogo(identity);

setLogo(logoResponse);
if (logoResponse) {
setLogo(logoResponse);

return;
}
}

if (operatorAddress) {
const fallbackLogo = fallbackLogoMap[operatorAddress];

if (fallbackLogo) {
setLogo(fallbackLogo);
}
}
})();
}, [identity]);
}, [identity, operatorAddress]);

return logo || defaultAvatar;
};

0 comments on commit 2c72716

Please sign in to comment.