golos-lib-js
Version:
Golos-js the JavaScript library with API for GOLOS blockchain
59 lines (58 loc) • 1.31 kB
JavaScript
;
var _asyncKeychain = require("./asyncKeychain");
var _misc = require("../utils/misc");
async function waitForKc() {
if (typeof document === 'undefined' || !document.getElementById('golos_keychain_inpage')) {
return false;
}
let init = false;
for (let i = 0; i < 200; ++i) {
init = typeof window.golosKeychain !== 'undefined';
if (init) break;
await (0, _misc.delay)(10);
}
if (!init) {
throw new Error('Golos Keychain extension is broken due to some bug');
}
return true;
}
async function assertKc() {
if (!(await waitForKc())) {
throw new Error('Golos Keychain extension is not installed or disabled');
}
}
async function kcLogin() {
await assertKc();
await _asyncKeychain.singles.login();
}
async function kcLoggedIn() {
if (!(await waitForKc())) return {
authorized: false
};
return await _asyncKeychain.singles.loggedIn();
}
async function kcLogout() {
const state = await kcLoggedIn();
if (state && state.authorized) {
await _asyncKeychain.singles.logout();
return true;
}
return false;
}
async function kcSign(_ref) {
let {
tx
} = _ref;
await assertKc();
return await _asyncKeychain.singles.sign({
tx
});
}
module.exports = {
kcLogin,
kcLoggedIn,
kcLogout,
waitForKc,
assertKc,
kcSign
};