@dataunlocker/defender-react
Version:
DataUnlocker Defender for React applications.
41 lines (40 loc) • 1.59 kB
TypeScript
import { RefObject } from 'react';
export declare const getCurrentReactRef: <T>(obj: RefObject<T>) => T;
export declare const setCurrentReactRef: <T>(obj: RefObject<T>, value: T) => T;
/**
* A function invoked after DataUnlocker is fully loaded and knows what to proxy.
*/
export type DefenderOnLoadHandler = (secureEnclaveReturnData?: any) => void;
/**
* A function invoked after DataUnlocker errors, either before or after Defender loads.
*
* Return boolean true to prevent Defender from showing default Dead End screen.
*/
export type DefenderOnErrorHandler = (errorCode: number) => true | void;
/**
* DataUnlocker Defender integration for React applications.
*
* Usage example:
*
* const onLoad = useCallback(() => { ...init tracking here or better use Secure Enclave... }, []);
* const onError = useCallback(() => { ...stop interactivity in your application here or return true to disable Dead End screen... }, []);
*
* ```js
* const [isLoading, errorCode, secureEnclaveReturnedData] = useDefender();
*
* useEffect(() => {
* if (isLoading) return;
* onLoad();
* }, [isLoading])
*
* useEffect(() => {
* if (!errorCode) return;
* onError(errorCode);
* }, [errorCode])
* ```
*
* Handling `errorCode` and `isLoading` properly is crucially important to not let blockers circumvent your setup in future.
* Alternatively, use <Defender/> component.
*/
export declare const useDefender: () => [boolean, number, any];
export declare const _useDefender: (onLoadHandler?: DefenderOnLoadHandler, onErrorHandler?: DefenderOnErrorHandler) => [boolean, number, any];