diff --git a/jrx/pages/popup.html b/jrx/pages/popup.html
index 1bfd722..a96eedc 100644
--- a/jrx/pages/popup.html
+++ b/jrx/pages/popup.html
@@ -36,7 +36,19 @@
.account-inactive {
background: var(--b4);
- color: var(--g4);
+ color: var(--b7);
+ }
+
+ .balance-found {
+ color: var(--g5);
+ }
+
+ .balance-not-found {
+ color: var(--b7);
+ }
+
+ a {
+ color: var(--g5);
}
diff --git a/jrx/src/popup.ts b/jrx/src/popup.ts
index 05c8904..56bf62f 100644
--- a/jrx/src/popup.ts
+++ b/jrx/src/popup.ts
@@ -209,6 +209,36 @@ pi_repop
// add
addr_li.appendChild(addr_a);
+ // balance
+ let bal_li = document.createElement('li');
+ bal_li.innerHTML += 'Balance: ';
+ // old school async/await
+ pi_balance(this_rkp.akstr).then(
+ function(maybe_balance) {
+ // if there is a balance, show it in green
+ if (maybe_balance.ok)
+ {
+ let greentext = document.createElement('span');
+ greentext.classList.add('balance-found');
+ // @ts-ignore fuck off i know what i'm doing
+ greentext.innerHTML = '' + maybe_balance.balance;
+
+ bal_li.appendChild(greentext);
+ }
+ // if not, show reason and make it red
+ else
+ {
+ let redtext = document.createElement('span');
+ redtext.classList.add('balance-not-found');
+ // @ts-ignore fuck off i know what i'm doing
+ redtext.innerHTML = '' + maybe_balance.reason;
+
+ bal_li.appendChild(redtext);
+ }
+ }
+ );
+
+
// add delete button
let del_li = document.createElement('li');
@@ -246,10 +276,11 @@ pi_repop
// add everything inside-out
- rkp_ul.appendChild(addr_li);
rkp_ul.appendChild(name_li);
- rkp_ul.appendChild(del_li);
+ rkp_ul.appendChild(addr_li);
+ rkp_ul.appendChild(bal_li);
rkp_ul.appendChild(gphrase_li);
+ rkp_ul.appendChild(del_li);
this_li.appendChild(rkp_ul);
@@ -280,3 +311,47 @@ pi_repop
}
}
}
+/**
+ * get account balance of ak_... str
+ */
+async function
+pi_balance
+ (akstr : string)
+ : Promise< {ok : true,
+ balance : number}
+ | {ok : false,
+ reason : string}
+ >
+{
+ let endpoint_init_url = 'https://demonet.qpq.swiss/v2/';
+ let this_endpoint = endpoint_init_url + '/accounts/' + akstr;
+ let input_params = {pubkey: akstr};
+ // fetch: https://developer.mozilla.org/en-US/docs/Web/API/fetch
+ let response = await fetch(this_endpoint);
+ // 200 = ok
+ // 400 = pubkey malformed
+ // 404 = account dne
+ switch (response.status) {
+ case 200:
+ // unstringify the body
+ let return_data = response.json();
+ // get the balance
+ // @ts-ignore talking to foreign api
+ let balance = return_data.balance;
+ return {ok : true,
+ balance : balance};
+ // pubkey malformed
+ case 400:
+ return {ok : false,
+ reason : 'Pubkey Malformed'};
+ // account dne
+ case 404:
+ return {ok : false,
+ reason : 'Account does not exist yet'};
+ // wtf
+ default:
+ return {ok : false,
+ reason : 'Unexpected response from node'};
+ }
+}
+