Matthew Raymer
1 year ago
3 changed files with 107 additions and 0 deletions
@ -0,0 +1,93 @@ |
|||||
|
<template> |
||||
|
<QuickNav selected="Profile"></QuickNav> |
||||
|
<section> |
||||
|
<AlertMessage |
||||
|
:alertTitle="alertTitle" |
||||
|
:alertMessage="alertMessage" |
||||
|
></AlertMessage> |
||||
|
</section> |
||||
|
</template> |
||||
|
<script lang="ts"> |
||||
|
import { Component, Vue } from "vue-facing-decorator"; |
||||
|
|
||||
|
import { AppString } from "@/constants/app"; |
||||
|
import { db, accountsDB } from "@/db"; |
||||
|
import { AccountsSchema } from "@/db/tables/accounts"; |
||||
|
import { MASTER_SETTINGS_KEY } from "@/db/tables/settings"; |
||||
|
import AlertMessage from "@/components/AlertMessage"; |
||||
|
import QuickNav from "@/components/QuickNav"; |
||||
|
|
||||
|
@Component({ components: { AlertMessage, QuickNav } }) |
||||
|
export default class IdentitySwitcherView extends Vue { |
||||
|
Constants = AppString; |
||||
|
private accounts: AccountsSchema; |
||||
|
|
||||
|
async created() { |
||||
|
try { |
||||
|
await db.open(); |
||||
|
const settings = await db.settings.get(MASTER_SETTINGS_KEY); |
||||
|
this.activeDid = settings?.activeDid || ""; |
||||
|
this.apiServer = settings?.apiServer || ""; |
||||
|
this.apiServerInput = settings?.apiServer || ""; |
||||
|
this.firstName = settings?.firstName || ""; |
||||
|
this.lastName = settings?.lastName || ""; |
||||
|
this.showContactGives = !!settings?.showContactGivesInline; |
||||
|
|
||||
|
const identity = await this.getIdentity(this.activeDid); |
||||
|
|
||||
|
this.publicHex = identity.keys[0].publicKeyHex; |
||||
|
this.publicBase64 = Buffer.from(this.publicHex, "hex").toString("base64"); |
||||
|
this.derivationPath = identity.keys[0].meta.derivationPath; |
||||
|
|
||||
|
db.settings.update(MASTER_SETTINGS_KEY, { |
||||
|
activeDid: identity.did, |
||||
|
}); |
||||
|
this.checkLimits(); |
||||
|
} catch (err) { |
||||
|
if ( |
||||
|
err.message === |
||||
|
"Attempted to load account records with no identity available." |
||||
|
) { |
||||
|
this.limitsMessage = "No identity."; |
||||
|
this.loadingLimits = false; |
||||
|
} else { |
||||
|
this.alertMessage = |
||||
|
"Clear your cache and start over (after data backup)."; |
||||
|
console.error( |
||||
|
"Telling user to clear cache at page create because:", |
||||
|
err, |
||||
|
); |
||||
|
this.alertTitle = "Error Creating Account"; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
async switchAccount(accountNum: number) { |
||||
|
// 0 means none |
||||
|
if (accountNum === 0) { |
||||
|
await db.open(); |
||||
|
db.settings.update(MASTER_SETTINGS_KEY, { |
||||
|
activeDid: undefined, |
||||
|
}); |
||||
|
this.activeDid = ""; |
||||
|
this.derivationPath = ""; |
||||
|
this.publicHex = ""; |
||||
|
this.publicBase64 = ""; |
||||
|
} else { |
||||
|
await accountsDB.open(); |
||||
|
const accounts = await accountsDB.accounts.toArray(); |
||||
|
const account = accounts[accountNum - 1]; |
||||
|
|
||||
|
await db.open(); |
||||
|
db.settings.update(MASTER_SETTINGS_KEY, { |
||||
|
activeDid: account.did, |
||||
|
}); |
||||
|
|
||||
|
this.activeDid = account.did; |
||||
|
this.derivationPath = account.derivationPath; |
||||
|
this.publicHex = account.publicKeyHex; |
||||
|
this.publicBase64 = Buffer.from(this.publicHex, "hex").toString("base64"); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
Loading…
Reference in new issue