Skip to main content
import { SunbreakProvider } from "@tdfc/sunbreak-react";

export function PhantomExample() {
  const [pubkey, setPubkey] = React.useState<string | undefined>();
  const [proof, setProof] = React.useState<any | null>(null);

  async function connect() {
    const res = await window.solana.connect();
    setPubkey(res.publicKey?.toString());
  }

  async function signMessage() {
    const msg = new TextEncoder().encode(`Sign in @ ${window.location.host}`);
    const { signature } = await window.solana.signMessage(msg, "utf8");
    setProof({
      method: "ed25519",
      messageBase64: btoa(String.fromCharCode(...msg)),
      signatureBase64: btoa(String.fromCharCode(...signature)),
    });
  }

  return (
    <SunbreakProvider
      base={process.env.NEXT_PUBLIC_SUNBREAK_BASE!}
      clientId={process.env.NEXT_PUBLIC_SUNBREAK_CLIENT_ID!}
      wallet={pubkey}
      proof={proof}
    >
      <button onClick={connect}>Connect Phantom</button>
      <button onClick={signMessage}>Sign</button>
    </SunbreakProvider>
  );
}