UNPKG

@dataunlocker/defender-react

Version:

DataUnlocker Defender for React applications.

41 lines (40 loc) 1.59 kB
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];