useExtendClaimWindow
Admin extends the claim deadline.
@tokenops/sdk/fhe-airdrop/react{ mutate, mutateAsync, isPending, error, data }Description
Move an airdrop instance's claim-window end time forward. Requires
WINDOW_ADMIN_ROLE, and only succeeds on an instance created with
canExtendClaimWindow: true. newEndTime must be later than both the current
end and the chain's current block timestamp; an end not more than 60 seconds after
the latest block's timestamp is refused before sending (InvalidArgumentError
on newEndTime), since the block that mines it can overtake a closer end.
Invalidates: only this instance's useAirdropWindow entry — endTime
is one of the five fields that hook bundles. Not invalidated: the window
blockers of usePreflightClaim and a cached false from
useIsSignatureValid, both of which a later endTime can move; refetch
them if the same session renders a claim form.
Signature
function useExtendClaimWindow(options: AirdropInstanceClientOptions): UseMutationResult<Hex, Error, ExtendClaimWindowArgs>;Parameters
Shape of the object you pass to .mutate(args) is the SDK type ExtendClaimWindowArgs. Inspect the type for the full shape (discriminated unions collapse to a tagged variant at call time).
Example
const extend = useExtendClaimWindow({ address: airdropAddress });
await extend.mutateAsync({ newEndTime: Math.floor(Date.now() / 1000) + 86_400 });Pulled directly from the hook's TSDoc block — the same snippet your IDE shows on hover.
Errors
This mutation can reject with SDK-level, product-level, or generic-fallback errors. Product classes carry the offending value as fields — render them inline instead of a generic "transaction failed." See Airdrop v2 › Errors for the per-class recovery table.
Invalidation recipe
After this mutation succeeds, invalidate the queries it affects so consumer UI re-fetches fresh state. The SDK never auto-invalidates — that's a consumer decision (different apps cache different shapes).
import { useQueryClient } from "@tanstack/react-query";
const queryClient = useQueryClient();
const extendClaimWindow = useExtendClaimWindow(/* options */);
extendClaimWindow.mutate(args, {
onSuccess() {
// Coarse invalidation: refresh every cached read on this product surface.
queryClient.invalidateQueries({
queryKey: ["tokenops-sdk", "fhe-airdrop"],
});
},
});See also
Other Configure hooks in airdrop v2: