diff options
author | polwex <polwex@sortug.com> | 2025-09-18 00:24:39 +0700 |
---|---|---|
committer | polwex <polwex@sortug.com> | 2025-09-18 00:24:39 +0700 |
commit | 4b016c908dda2019f3bf89e5a3d2eae535e5fbd2 (patch) | |
tree | 639613aa8bcc3d36b5165a32ece4a421dabde4c8 /front/src/components/modals/UserModal.tsx | |
parent | 985fa2f7c99832cdf3c3351d2273c8fd05402b78 (diff) |
oioi
Diffstat (limited to 'front/src/components/modals/UserModal.tsx')
-rw-r--r-- | front/src/components/modals/UserModal.tsx | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/front/src/components/modals/UserModal.tsx b/front/src/components/modals/UserModal.tsx new file mode 100644 index 0000000..6e3089d --- /dev/null +++ b/front/src/components/modals/UserModal.tsx @@ -0,0 +1,65 @@ +import Modal from "./Modal"; +import Avatar from "../Avatar"; +import Icon from "@/components/Icon"; +import useLocalState from "@/state/state"; +import { useLocation } from "wouter"; +import toast from "react-hot-toast"; +import type { UserType } from "@/types/nostrill"; + +export default function ({ + user, + userString, +}: { + user: UserType; + userString: string; +}) { + const { setModal, api, pubkey } = useLocalState((s) => ({ + setModal: s.setModal, + api: s.api, + pubkey: s.pubkey, + })); + const [_, navigate] = useLocation(); + function close() { + setModal(null); + } + const itsMe = + "urbit" in user + ? user.urbit === api?.airlock.our + : "nostr" in user + ? user.nostr === pubkey + : false; + async function copy(e: React.MouseEvent) { + e.stopPropagation(); + await navigator.clipboard.writeText(userString); + toast.success("Copied to clipboard"); + } + return ( + <Modal close={close}> + <div id="ship-modal"> + <div className="flex"> + <Avatar user={user} userString={userString} size={60} /> + <Icon + name="copy" + size={20} + className="copy-icon cp" + onClick={copy} + title="Copy ship name" + /> + </div> + <div className="buttons f1"> + <button onClick={() => navigate(`/feed/${userString}`)}>Feed</button> + <button onClick={() => navigate(`/pals/${userString}`)}> + Profile + </button> + {itsMe && ( + <> + <button onClick={() => navigate(`/chat/dm/${userString}`)}> + DM + </button> + </> + )} + </div> + </div> + </Modal> + ); +} |