UNPKG

@broxus/tvm-connect

Version:

TypeScript SDK for connecting to Nekoton-compatible wallets using a unified interface.

36 lines (35 loc) 1.38 kB
import { isBrowser } from '@broxus/js-utils'; import * as React from 'react'; import { TVM_RECENT_CONNECTION } from '../constants'; import { useSharedParams } from '../context/SharedParamsContext'; import { getRecentConnectionMeta, isRecentConnectionMeta, storeRecentConnectionMeta } from '../utils'; export function useRecentConnectionMeta() { const params = useSharedParams(); const storageKey = params.recentMetaStorageKey ?? TVM_RECENT_CONNECTION; const [recentMeta, setRecentMeta] = React.useState(getRecentConnectionMeta(storageKey)); const setMeta = (meta) => { storeRecentConnectionMeta(meta, storageKey); }; React.useEffect(() => { const onStorage = (event) => { if (event.key === storageKey && event.newValue) { const json = JSON.parse(event.newValue); if (isRecentConnectionMeta(json)) { setRecentMeta(json); } } }; if (isBrowser()) { window.addEventListener('storage', onStorage); } return () => { if (isBrowser()) { window.removeEventListener('storage', onStorage); } }; }, [storageKey]); React.useEffect(() => { setRecentMeta(getRecentConnectionMeta(storageKey)); }, [storageKey]); return [recentMeta, setMeta]; }