From 013098d3f48267de4397f7f80d64cbad55af985f Mon Sep 17 00:00:00 2001 From: hzrd149 Date: Mon, 15 Apr 2024 14:44:41 -0500 Subject: [PATCH] make avatar outline based on pubkey --- src/components/user/user-avatar.tsx | 2 +- src/helpers/color.ts | 9 ++++ src/views/user/about/index.tsx | 76 ++++++++++++++++++++++++++++- 3 files changed, 84 insertions(+), 3 deletions(-) create mode 100644 src/helpers/color.ts diff --git a/src/components/user/user-avatar.tsx b/src/components/user/user-avatar.tsx index 511d56640..ad42002ac 100644 --- a/src/components/user/user-avatar.tsx +++ b/src/components/user/user-avatar.tsx @@ -33,7 +33,7 @@ export type UserAvatarProps = Omit & export const UserAvatar = forwardRef( ({ pubkey, noProxy, relay, size, ...props }, ref) => { const metadata = useUserMetadata(pubkey, relay ? [relay] : undefined); - const color = useDnsIdentityColor(pubkey); + const color = "#" + pubkey.slice(0, 6); //useDnsIdentityColor(pubkey); return ( 186) return "dark"; + return "light"; +} diff --git a/src/views/user/about/index.tsx b/src/views/user/about/index.tsx index e9dad66b7..1b209c104 100644 --- a/src/views/user/about/index.tsx +++ b/src/views/user/about/index.tsx @@ -1,5 +1,22 @@ import { useOutletContext, Link as RouterLink } from "react-router-dom"; -import { Box, Button, Flex, Heading, IconButton, Image, Link, Text, useDisclosure } from "@chakra-ui/react"; +import { + Box, + Button, + Flex, + Heading, + IconButton, + Image, + Input, + Link, + Modal, + ModalBody, + ModalCloseButton, + ModalContent, + ModalHeader, + ModalOverlay, + Text, + useDisclosure, +} from "@chakra-ui/react"; import { nip19 } from "nostr-tools"; import { getUserDisplayName } from "../../../helpers/nostr/user-metadata"; @@ -22,7 +39,7 @@ import { CopyIconButton } from "../../../components/copy-icon-button"; import { QrIconButton } from "../components/share-qr-button"; import UserDnsIdentity from "../../../components/user/user-dns-identity"; import UserAvatar from "../../../components/user/user-avatar"; -import { ChatIcon } from "@chakra-ui/icons"; +import { ChatIcon, QuestionIcon } from "@chakra-ui/icons"; import { UserFollowButton } from "../../../components/user/user-follow-button"; import UserZapButton from "../components/user-zap-button"; import { UserProfileMenu } from "../components/user-profile-menu"; @@ -32,6 +49,7 @@ import UserJoinedCommunities from "./user-joined-communities"; import UserPinnedEvents from "./user-pinned-events"; import UserStatsAccordion from "./user-stats-accordion"; import UserJoinedChanneled from "./user-joined-channels"; +import { getTextColor } from "../../../helpers/color"; function buildDescriptionContent(description: string) { let content: EmbedableContent = [description.trim()]; @@ -46,6 +64,7 @@ export default function UserAboutTab() { const expanded = useDisclosure(); const { pubkey } = useOutletContext() as { pubkey: string }; const contextRelays = useAdditionalRelayContext(); + const colorModal = useDisclosure(); const metadata = useUserMetadata(pubkey, contextRelays); const npub = nip19.npubEncode(pubkey); @@ -53,6 +72,7 @@ export default function UserAboutTab() { const aboutContent = metadata?.about && buildDescriptionContent(metadata?.about); const parsedNip05 = metadata?.nip05 ? parseAddress(metadata.nip05) : undefined; + const pubkeyColor = "#" + pubkey.slice(0, 6); return ( + + + Public key color + + {pubkeyColor} + + + {metadata?.lud16 && ( @@ -194,6 +222,50 @@ export default function UserAboutTab() { + + + + + Public Key Color + + + + + + + {pubkey.slice(0, 6)} + + + {pubkey.slice(6)} + + + + + {pubkeyColor} + + + + The public key color is a hex color code created by taking the first 6 digits of a users pubkey. +
+ It can be used to help users identify fake accounts or impersonators +
+
+
+
); }