import React, { useState, useEffect, useRef, ComponentClass } from 'react'; import Engine from '../../../core/Engine'; import { IQRState } from './types'; const withQRHardwareAwareness = ( Children: ComponentClass<{ QRState?: IQRState; isSigningQRObject?: boolean; isSyncingQRHardware?: boolean; }>, ) => { const QRHardwareAwareness = (props: any) => { const keyringState: any = useRef(); const [QRState, SetQRState] = useState({ sync: { reading: false, }, sign: {}, }); const subscribeKeyringState = (value: any) => { SetQRState(value); }; useEffect(() => { const { KeyringController } = Engine.context as any; KeyringController.getQRKeyringState().then((store: any) => { keyringState.current = store; keyringState.current.subscribe(subscribeKeyringState); }); return () => { if (keyringState.current) { keyringState.current.unsubscribe(subscribeKeyringState); } }; }, []); return ( ); }; return QRHardwareAwareness; }; export default withQRHardwareAwareness;