2023-09-03 14:52:14 +02:00
|
|
|
var connect = connect_manual_session;
|
|
|
|
|
2023-09-05 04:19:53 +02:00
|
|
|
|
2023-09-03 14:52:14 +02:00
|
|
|
async function checkKey() {
|
|
|
|
const r = localStorage.getItem(KEY_STORAGEKEY);
|
|
|
|
if (r) {
|
|
|
|
stateChange('found existing key', STATE.LOCAL_KEY, STATE.LOCAL_KEY_PROBE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-09-05 04:19:53 +02:00
|
|
|
|
2023-09-03 14:52:14 +02:00
|
|
|
// 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);
|
2023-09-05 04:19:53 +02:00
|
|
|
checkKey(); const v = document.getElementById('passphrase').value;
|
2023-09-03 14:52:14 +02:00
|
|
|
const r = await connect(v);
|
|
|
|
if (r) {
|
|
|
|
stateChange('key request finished', STATE.LOCAL_KEY_UNLOCK, );
|
|
|
|
}
|
|
|
|
}
|
2023-09-05 04:19:53 +02:00
|
|
|
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);
|
|
|
|
}
|
2023-09-03 14:52:14 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
2023-09-05 04:19:53 +02:00
|
|
|
async function scan_rpc(pw) {
|
|
|
|
const contracts = await scanRegistry(g_registry);
|
|
|
|
stateChange(contracts, STATE.EVM_REGISTRY);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2023-09-03 14:52:14 +02:00
|
|
|
async function connect_manual_session(pw) {
|
|
|
|
let wallet = undefined;
|
2023-09-05 04:19:53 +02:00
|
|
|
|
2023-09-03 14:52:14 +02:00
|
|
|
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;
|
|
|
|
}
|
2023-09-05 04:19:53 +02:00
|
|
|
checkWallet();
|
2023-09-03 14:52:14 +02:00
|
|
|
return wallet;
|
|
|
|
}
|
|
|
|
|
2023-09-05 04:19:53 +02:00
|
|
|
|
|
|
|
async function handlePromise(o) {
|
|
|
|
console.debug('processing promise', o);
|
|
|
|
await putPromise(o);
|
|
|
|
scanPromises();
|
|
|
|
}
|
|
|
|
|
|
|
|
function checkWallet() {
|
|
|
|
pingWallet();
|
|
|
|
setTimeout(checkWallet, g_poll_wallet);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2023-09-03 14:52:14 +02:00
|
|
|
function checkRpc() {
|
|
|
|
pingRpc();
|
2023-09-05 04:19:53 +02:00
|
|
|
setTimeout(checkRpc, g_poll_rpc);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function checkPersist() {
|
|
|
|
g_persist.forEach((v) => {
|
|
|
|
v.put('foo');
|
|
|
|
});
|
2023-09-05 20:01:53 +02:00
|
|
|
scanPromises();
|
2023-09-03 14:52:14 +02:00
|
|
|
}
|
|
|
|
|
2023-09-05 04:19:53 +02:00
|
|
|
|
2023-09-03 14:52:14 +02:00
|
|
|
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);
|
2023-09-05 04:19:53 +02:00
|
|
|
const w = new Wala('http://localhost:8081');
|
|
|
|
g_persist.push(w);
|
|
|
|
checkPersist();
|
|
|
|
checkRpc();
|
2023-09-03 14:52:14 +02:00
|
|
|
});
|