import { useEffect, useState } from "react"; import { FormattedMessage } from "react-intl"; import useLogin from "Hooks/useLogin"; import { useUserProfile } from "@snort/system-react"; interface Token { token: Array<{ mint: string; proofs: Array<{ amount: number; }>; }>; memo?: string; } export default function CashuNuts({ token }: { token: string }) { const login = useLogin(); const profile = useUserProfile(login.publicKey); async function copyToken(e: React.MouseEvent, token: string) { e.stopPropagation(); await navigator.clipboard.writeText(token); } async function redeemToken(e: React.MouseEvent, token: string) { e.stopPropagation(); const lnurl = profile?.lud16 ?? ""; const url = `https://redeem.cashu.me?token=${encodeURIComponent(token)}&lightning=${encodeURIComponent( lnurl, )}&autopay=yes`; window.open(url, "_blank"); } const [cashu, setCashu] = useState(); useEffect(() => { try { if (!token.startsWith("cashuA") || token.length < 10) { return; } import("@cashu/cashu-ts").then(({ getDecodedToken }) => { const tkn = getDecodedToken(token); setCashu(tkn); }); } catch { // ignored } }, [token]); if (!cashu) return <>{token}; return (

acc + v.amount, 0), }} />

); }