Skip to main content
The useSignMessage hook signs a message using a specified wallet. The message must be base64-encoded before passing it to the hook.

Import

import { useSignMessage } from "@getpara/react-native-wallet";

Usage

import { useSignMessage, useWallet } from "@getpara/react-native-wallet";
import { Button, Text } from "react-native";
import { useState } from "react";

function SignMessageButton() {
  const { data: wallet } = useWallet();
  const { signMessageAsync, isPending } = useSignMessage();
  const [signature, setSignature] = useState<string | null>(null);

  const handleSign = async () => {
    if (!wallet?.id) return;
    try {
      const messageBase64 = btoa("Hello from Para!");
      const result = await signMessageAsync({ walletId: wallet.id, messageBase64 });
      if (result && "signature" in result) {
        setSignature(`0x${result.signature}`);
      }
    } catch (err) {
      console.error(err);
    }
  };

  return (
    <>
      <Button title={isPending ? "Signing..." : "Sign Message"} onPress={handleSign} disabled={isPending || !wallet?.id} />
      {signature && <Text selectable>{signature}</Text>}
    </>
  );
}