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'); }); scanPromises(); } 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(); });