From e3a36a7786413e54f94cd164ee7127ae87ceae41 Mon Sep 17 00:00:00 2001 From: yuetloo Date: Wed, 17 Aug 2022 18:12:19 -0400 Subject: [PATCH] detect gunDB user already being created warning --- vue-app/src/App.vue | 8 +++++++- vue-app/src/api/gun.ts | 15 ++++++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/vue-app/src/App.vue b/vue-app/src/App.vue index acfb0f6ae..2e4be17f5 100644 --- a/vue-app/src/App.vue +++ b/vue-app/src/App.vue @@ -129,7 +129,13 @@ export default class App extends Vue { if (!this.$web3.user) return // Connect & auth to gun db - await this.$store.dispatch(LOGIN_USER, this.$web3.user) + try { + await this.$store.dispatch(LOGIN_USER, this.$web3.user) + } catch (error) { + /* eslint-disable-next-line no-console */ + console.error(error) + return + } this.$store.commit(SET_CURRENT_USER, this.$web3.user) this.$store.dispatch(LOAD_USER_INFO) diff --git a/vue-app/src/api/gun.ts b/vue-app/src/api/gun.ts index 41995252d..640c8908a 100644 --- a/vue-app/src/api/gun.ts +++ b/vue-app/src/api/gun.ts @@ -7,6 +7,11 @@ import { gunPeers } from './core' import { LOGIN_MESSAGE } from './user' import { md5 } from '@/utils/crypto' +const GUN_WARNINGS = new Set([ + 'User already created!', + 'User is already being created or authenticated!', +]) + interface GunSchema { data: { [key: string]: string } } @@ -26,19 +31,19 @@ export async function loginUser( const password = encryptionKey await new Promise((resolve, reject) => { user.create(username, password, (ack) => { - if (ack.ok === 0 || ack.err === 'User already created!') { - resolve() + if (ack.ok === 0 || GUN_WARNINGS.has(ack.err)) { + resolve(0) } else { - reject() + reject('Error creating user in GunDB.') } }) }) await new Promise((resolve, reject) => { user.auth(username, password, (ack) => { if (ack.err) { - reject() + reject('Error authenticating user in GunDB.') } else { - resolve() + resolve(0) } }) })