49 lines
1.4 KiB
TypeScript
Raw Normal View History

2023-10-14 18:57:37 -04:00
import Container from "./components/Container";
import { CardTitle, CardDescription } from "@/components/ui/card";
import { type Event } from "nostr-tools";
import { RenderText } from "../TextRendering";
import { getTagsValues } from "@/lib/nostr/utils";
import LinkCard from "@/components/LinkCard";
2023-10-15 11:44:15 -04:00
import { copyText } from "@/lib/utils";
import { nip19 } from "nostr-tools";
import { toast } from "sonner";
export default function Kind1(props: Event) {
2023-10-16 00:57:59 -04:00
const { content, pubkey, tags, created_at: createdAt } = props;
const r = getTagsValues("r", tags).filter(Boolean);
2023-10-15 11:44:15 -04:00
const npub = nip19.npubEncode(pubkey);
2023-10-14 18:57:37 -04:00
return (
2023-10-15 11:44:15 -04:00
<Container
pubkey={pubkey}
2023-10-16 00:57:59 -04:00
createdAt={createdAt}
2023-10-15 11:44:15 -04:00
actionOptions={[
{
label: "View profile",
href: `/${npub}`,
type: "link",
},
{
label: "Copy raw data",
type: "button",
onClick: () => {
void copyText(JSON.stringify(props));
toast.success("Copied Text!");
},
},
]}
>
2023-10-16 10:59:28 -04:00
<CardDescription className="text-sm font-normal text-secondary-foreground">
<RenderText text={content} />
2023-10-14 18:57:37 -04:00
</CardDescription>
{!!r.length && (
<div className="mt-1.5 flex flex-wrap">
2023-10-15 12:11:39 -04:00
{r.map((url, idx) => (
<LinkCard key={idx} url={url} className="max-w-[250px]" />
))}
</div>
)}
2023-10-14 18:57:37 -04:00
</Container>
);
}