@frak-labs/react-sdk
Version:
React SDK of the Frak wallet, low level library to interact directly with the frak ecosystem.
36 lines (33 loc) • 1.32 kB
text/typescript
import { setupReferral } from "@frak-labs/core-sdk/actions";
import { ClientNotFound } from "@frak-labs/frame-connector";
import { useQuery } from "@tanstack/react-query";
import { useFrakClient } from "./useFrakClient";
/**
* Hook that automatically processes referral context and emits a DOM event on success
*
* Runs once when the Frak client becomes available. Fire-and-forget — the referral
* result is tracked via a `"frak:referral-success"` DOM event on `window`, not via
* the returned query data.
*
* @group hooks
*
* @returns The query handle (data is not meaningful — listen for `REFERRAL_SUCCESS_EVENT` on `window` instead)
*
* @see {@link @frak-labs/core-sdk!actions.setupReferral | `setupReferral()`} for more info about the underlying action
* @see {@link @frak-labs/core-sdk!actions.REFERRAL_SUCCESS_EVENT | `REFERRAL_SUCCESS_EVENT`} for the event name constant
*/
export function useSetupReferral() {
const client = useFrakClient();
return useQuery({
queryKey: ["frak-sdk", "setup-referral"],
queryFn: async () => {
if (!client) {
throw new ClientNotFound();
}
await setupReferral(client);
return null;
},
enabled: !!client,
staleTime: Number.POSITIVE_INFINITY,
});
}