68 lines
1.6 KiB
JavaScript
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);
|
|
});
|
|
|