Skip to content

Commit

Permalink
feat: organize avatar by environment name and wallet address
Browse files Browse the repository at this point in the history
  • Loading branch information
greatertomi committed Apr 16, 2024
1 parent 96c1b34 commit 29c2d01
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 8 deletions.
Expand Up @@ -28,12 +28,15 @@ export const DropdownMenu = ({ isPopup }: DropdownMenuProps): React.ReactElement
setIsDropdownMenuOpen
} = useWalletStore();
const [handle] = useGetHandles();
const { environmentName } = useWalletStore();
const { environmentName, walletInfo } = useWalletStore();
const [avatars] = useLocalStorage('userAvatar');

const Chevron = isPopup ? ChevronSmall : ChevronNormal;
const handleImage = handle?.profilePic;
const userAvatar = avatars[environmentName] || (handleImage && getAssetImageUrl(handleImage));
const address = walletInfo.addresses[0].address.toString();
const userAvatar =
(environmentName && avatars && avatars[`${environmentName}${address}`]) ||
(handleImage && getAssetImageUrl(handleImage));

const sendAnalyticsEvent = (event: PostHogAction) => {
analytics.sendEventToPostHog(event);
Expand Down
Expand Up @@ -47,11 +47,15 @@ export const UserInfo = ({ onOpenWalletAccounts, avatarVisible = true }: UserInf
const fullWalletName = cardanoWallet.source.wallet.metadata.name;
const activeWalletName = addEllipsis(fullWalletName, WALLET_NAME_MAX_LENGTH, 0);
const [handle] = useGetHandles();

const handleName = handle?.nftMetadata?.name;
const activeWalletId = cardanoWallet.source.wallet.walletId;
const [avatars] = useLocalStorage('userAvatar');
const handleImage = handle?.profilePic;
const userAvatar = avatars[environmentName] || (handleImage && getAssetImageUrl(handleImage));
const address = walletInfo.addresses[0].address.toString();
const userAvatar =
(environmentName && avatars && avatars[`${environmentName}${address}`]) ||
(handleImage && getAssetImageUrl(handleImage));

const handleOnAddressCopy = () => {
toast.notify({ duration: TOAST_DEFAULT_DURATION, text: t('general.clipboard.copiedToClipboard') });
Expand Down Expand Up @@ -109,7 +113,7 @@ export const UserInfo = ({ onOpenWalletAccounts, avatarVisible = true }: UserInf
}}
type={getUiWalletType(wallet.type)}
profile={
userAvatar
userAvatar && activeWalletId === wallet.walletId
? {
fallback: fullWalletName,
imageSrc: userAvatar
Expand All @@ -119,7 +123,17 @@ export const UserInfo = ({ onOpenWalletAccounts, avatarVisible = true }: UserInf
/>
);
},
[activateWallet, getLastActiveAccount, onOpenWalletAccounts, setIsDropdownMenuOpen, analytics, t, activeWalletId]
[
getLastActiveAccount,
userAvatar,
activeWalletId,
fullWalletName,
onOpenWalletAccounts,
analytics,
activateWallet,
setIsDropdownMenuOpen,
t
]
);

const renderWallet = useCallback(
Expand Down
2 changes: 1 addition & 1 deletion apps/browser-extension-wallet/src/types/local-storage.ts
Expand Up @@ -58,5 +58,5 @@ export interface ILocalStorage {
stakingBrowserPreferences: StakingBrowserPreferences;
showPinExtension?: boolean;
showMultiAddressModal?: boolean;
userAvatar?: Record<EnvironmentTypes, string>;
userAvatar?: Record<`${EnvironmentTypes}${string}`, string>;
}
Expand Up @@ -27,7 +27,7 @@ export const DetailsDrawer = ({
onSend
}: GeneralSettingsDrawerProps): ReactElement => {
const { t } = useTranslation();
const { environmentName } = useWalletStore();
const { environmentName, walletInfo } = useWalletStore();
const assetInfo = useMemo(
() => (isNil(assetsInfo) ? undefined : assetsInfo.get(selectedNft?.assetId)),
[selectedNft, assetsInfo]
Expand All @@ -42,7 +42,8 @@ export const DetailsDrawer = ({
};

const handleSetAsAvatar = (image: string) => {
setUserAvatar({ ...userAvatar, [environmentName]: image });
const address = walletInfo.addresses[0].address.toString();
setUserAvatar({ ...userAvatar, [`${environmentName}${address}`]: image });
toast.notify({ text: t('core.nftDetail.avatarUpdated') });
void analytics.sendEventToPostHog(PostHogAction.NFTDetailSetAsAvatarClick);
};
Expand Down

0 comments on commit 29c2d01

Please sign in to comment.