gasgasgas/js/main.js

68 lines
1.6 KiB
JavaScript

import { ethers } from "./node_modules/ethers/dist/ethers.min.js";
register_ethers(ethers);
var connect = connect_manual_session;
async function checkKey() {
const r = localStorage.getItem(KEY_STORAGEKEY);
if (r) {
stateChange('found existing key', STATE.LOCAL_KEY, STATE.LOCAL_KEY_PROBE);
}
}
// router
var initRouter = async (e) => {
if (checkState(STATE.LOCAL_KEY_REQUEST, e.detail.state)) {
stateChange('process key unlock request', 0, STATE.LOCAL_KEY_REQUEST | STATE.LOCAL_KEY_PROBE | STATE.LOCAL_KEY_REJECT);
checkKey();
const v = document.getElementById('passphrase').value;
const r = await connect(v);
if (r) {
stateChange('key request finished', STATE.LOCAL_KEY_UNLOCK, );
}
}
};
async function connect_manual_session(pw) {
let provider = undefined;
let wallet = undefined;
try {
provider = await provider_connect('default');
} catch(e) {
console.error(e);
}
if (!provider) {
stateChange('no provider', STATE.RPC_GONE, STATE.LOCAL_KEY_REQUEST);
return;
}
try {
wallet = await wallet_connect('default', SESSION_ID, pw);
} catch(e) {
console.error(e);
}
if (!wallet) {
stateChange('wallet unlock fail', STATE.LOCAL_KEY_REJECT, STATE.LOCAL_KEY_REQUEST);
return;
}
checkRpc();
scanRegistry(g_registry);
return wallet;
}
function checkRpc() {
pingRpc();
setTimeout(checkRpc, 3000);
}
window.addEventListener('load', () => {
window.addEventListener('messagestatechange', initRouter);
if (DEBUG) {
window.addEventListener('messagestatechange', (e) => {
console.debug('state change:', e.detail.s);
});
}
stateChange('init key', STATE.LOCAL_KEY_PROBE);
});