gasgasgas/js/main.js

103 lines
2.3 KiB
JavaScript

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, );
}
}
if (checkState(STATE.RPC_CHANGE, e.detail.state)) {
scan_rpc();
stateChange('reset rpc change', 0, STATE.RPC_CHANGE);
g_poll_rpc = 3000;
}
if (checkState(STATE.RPC_GONE, e.detail.state)) {
//stateChange('reset rpc change', 0, STATE.RPC_CHANGE);
g_poll_rpc = 1000;
}
if (checkState(STATE.PROMISE_NEW, e.detail.state)) {
stateChange('reset rpc change', 0, STATE.PROMISE_NEW);
const o = {
label: document.getElementById('promiseLabel').value,
description: document.getElementById('promiseDescription').value,
};
handlePromise(o);
}
};
async function scan_rpc(pw) {
const contracts = await scanRegistry(g_registry);
stateChange(contracts, STATE.EVM_REGISTRY);
}
async function connect_manual_session(pw) {
let wallet = undefined;
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;
}
checkWallet();
return wallet;
}
async function handlePromise(o) {
console.debug('processing promise', o);
await putPromise(o);
scanPromises();
}
function checkWallet() {
pingWallet();
setTimeout(checkWallet, g_poll_wallet);
}
function checkRpc() {
pingRpc();
setTimeout(checkRpc, g_poll_rpc);
}
function checkPersist() {
g_persist.forEach((v) => {
v.put('foo');
});
}
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);
const w = new Wala('http://localhost:8081');
g_persist.push(w);
checkPersist();
checkRpc();
});