UNPKG

@aeternity/aepp-sdk

Version:

SDK for the æternity blockchain

44 lines 1.51 kB
import BrowserWindowMessageConnection from './connection/BrowserWindowMessage.js'; import { MESSAGE_DIRECTION, METHODS } from './schema.js'; import { UnsupportedPlatformError } from '../utils/errors.js'; /** * A function to detect available wallets * @category aepp wallet communication * @param connection - connection to use to detect wallets * @param onDetected - call-back function which trigger on new wallet * @returns a function to stop scanning */ export default (connection, onDetected) => { if (window == null) throw new UnsupportedPlatformError('Window object not found, you can run wallet detector only in browser'); const wallets = {}; connection.connect(({ method, params }, origin, source) => { if (method !== METHODS.readyToConnect || wallets[params.id] != null) return; const wallet = { info: params, getConnection() { return new BrowserWindowMessageConnection({ target: source, ...(params.type === 'extension' ? { sendDirection: MESSAGE_DIRECTION.to_waellet, receiveDirection: MESSAGE_DIRECTION.to_aepp, ...(window.origin !== 'null' && { origin: window.origin }) } : { origin: params.origin }) }); } }; wallets[wallet.info.id] = wallet; onDetected({ wallets, newWallet: wallet }); }, () => {}); return () => connection.disconnect(); }; //# sourceMappingURL=wallet-detector.js.map