@aeternity/aepp-sdk
Version:
SDK for the æternity blockchain
44 lines • 1.51 kB
JavaScript
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