Fix pubkey sign in.

Added try/catch and updated awaits for async methods in regards to sign
in attempts. This appears to resolve some race conditions with nos2x
extension. More testing to be performed.
This commit is contained in:
Thomas Mathews 2022-12-27 18:53:27 -08:00
parent 51ab5aae2a
commit 7ce72540cf
3 changed files with 21 additions and 12 deletions

View file

@ -391,7 +391,7 @@ details.cw summary {
-webkit-backdrop-filter: blur(20px);
}
.modal.scrollable {
overflow: scroll;
overflow-y: auto;
}
.modal.closed {
opacity: 0;

View file

@ -30,19 +30,18 @@ addEventListener('DOMContentLoaded', (ev) => {
async function damus_web_init() {
let tries = 0;
function init() {
// only wait for 500ms max
const max_wait = 500;
const interval = 20;
const max_wait = 500;
const interval = 20;
async function init() {
if (window.nostr || tries >= (max_wait/interval)) {
log_info("init after", tries);
damus_web_init_ready();
await damus_web_init_ready();
return;
}
tries++;
setTimeout(init, interval);
await init();
}
init();
setTimeout(init, interval);
}
async function damus_web_init_ready() {
@ -60,13 +59,19 @@ async function damus_web_init_ready() {
async function signin() {
const model = DAMUS;
model.pubkey = await get_pubkey();
try {
model.pubkey = await get_pubkey();
} catch (err) {
window.alert("An error occured trying to get your public key.");
return;
}
if (!model.pubkey) {
window.alert("No public key was aquired.");
return;
}
find_node("#container-welcome").classList.add("hide");
find_node("#container-app").classList.remove("hide");
webapp_init();
await webapp_init();
}
async function webapp_init() {

View file

@ -245,9 +245,13 @@ async function get_pubkey(use_prompt=true) {
return pubkey
if (window.nostr && window.nostr.getPublicKey) {
log_debug("calling window.nostr.getPublicKey()...")
const pubkey = await window.nostr.getPublicKey()
try {
pubkey = await window.nostr.getPublicKey()
return await handle_pubkey(pubkey)
} catch (err) {
return;
}
log_debug("got %s pubkey from nos2x", pubkey)
return await handle_pubkey(pubkey)
}
if (!use_prompt)
return;