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>}
</>
);
}