fix bug with users only setting display_name

This commit is contained in:
hzrd149
2023-03-09 16:08:36 -06:00
parent 9a3912af19
commit 479446d948
2 changed files with 60 additions and 37 deletions

View File

@@ -24,12 +24,9 @@ export function parseKind0Event(event: NostrEvent): Kind0ParsedContent {
}
export function getUserDisplayName(metadata: Kind0ParsedContent | undefined, pubkey: string) {
if (metadata?.display_name && metadata?.name) {
return metadata.display_name;
} else if (metadata?.name) {
return metadata.name;
}
return truncatedId(normalizeToBech32(pubkey, Bech32Prefix.Pubkey) ?? pubkey);
return (
metadata?.display_name || metadata?.name || truncatedId(normalizeToBech32(pubkey, Bech32Prefix.Pubkey) ?? pubkey)
);
}
export function fixWebsiteUrl(website: string) {

View File

@@ -1,7 +1,16 @@
import { Avatar, MenuItem } from "@chakra-ui/react";
import {
Avatar,
MenuItem,
Modal,
ModalBody,
ModalCloseButton,
ModalContent,
ModalOverlay,
useDisclosure,
} from "@chakra-ui/react";
import { MenuIconButton, MenuIconButtonProps } from "../../../components/menu-icon-button";
import { IMAGE_ICONS, SpyIcon } from "../../../components/icons";
import { CodeIcon, IMAGE_ICONS, SpyIcon } from "../../../components/icons";
import { Bech32Prefix, normalizeToBech32 } from "../../../helpers/nip19";
import accountService from "../../../services/account";
import { useUserMetadata } from "../../../hooks/use-user-metadata";
@@ -13,6 +22,7 @@ export const UserProfileMenu = ({ pubkey, ...props }: { pubkey: string } & Omit<
const npub = normalizeToBech32(pubkey, Bech32Prefix.Pubkey);
const metadata = useUserMetadata(pubkey);
const userRelays = useUserRelays(pubkey);
const infoModal = useDisclosure();
const loginAsUser = () => {
const readRelays = userRelays?.relays.filter((r) => r.mode === RelayMode.READ).map((r) => r.url) ?? [];
@@ -27,34 +37,50 @@ export const UserProfileMenu = ({ pubkey, ...props }: { pubkey: string } & Omit<
};
return (
<MenuIconButton {...props}>
<MenuItem icon={<SpyIcon fontSize="1.5em" />} onClick={() => loginAsUser()}>
Login as {getUserDisplayName(metadata, pubkey)}
</MenuItem>
<MenuItem
as="a"
icon={<Avatar src={IMAGE_ICONS.nostrGuruIcon} size="xs" />}
href={`https://www.nostr.guru/p/${npub}`}
target="_blank"
>
Open in Nostr.guru
</MenuItem>
<MenuItem
as="a"
icon={<Avatar src={IMAGE_ICONS.brbIcon} size="xs" />}
href={`https://brb.io/u/${npub}`}
target="_blank"
>
Open in BRB
</MenuItem>
<MenuItem
as="a"
icon={<Avatar src={IMAGE_ICONS.snortSocialIcon} size="xs" />}
href={`https://snort.social/p/${npub}`}
target="_blank"
>
Open in snort.social
</MenuItem>
</MenuIconButton>
<>
<MenuIconButton {...props}>
<MenuItem icon={<SpyIcon fontSize="1.5em" />} onClick={() => loginAsUser()}>
Login as {getUserDisplayName(metadata, pubkey)}
</MenuItem>
<MenuItem
as="a"
icon={<Avatar src={IMAGE_ICONS.nostrGuruIcon} size="xs" />}
href={`https://www.nostr.guru/p/${npub}`}
target="_blank"
>
Open in Nostr.guru
</MenuItem>
<MenuItem
as="a"
icon={<Avatar src={IMAGE_ICONS.brbIcon} size="xs" />}
href={`https://brb.io/u/${npub}`}
target="_blank"
>
Open in BRB
</MenuItem>
<MenuItem
as="a"
icon={<Avatar src={IMAGE_ICONS.snortSocialIcon} size="xs" />}
href={`https://snort.social/p/${npub}`}
target="_blank"
>
Open in snort.social
</MenuItem>
<MenuItem onClick={infoModal.onOpen} icon={<CodeIcon />}>
View Raw
</MenuItem>
</MenuIconButton>
{infoModal.isOpen && (
<Modal isOpen={infoModal.isOpen} onClose={infoModal.onClose} size="6xl">
<ModalOverlay />
<ModalContent>
<ModalCloseButton />
<ModalBody overflow="auto" fontSize="sm" padding="2">
<pre>{JSON.stringify(metadata, null, 2)}</pre>
</ModalBody>
</ModalContent>
</Modal>
)}
</>
);
};