<template> <section id="Content" class="p-6 pb-24"> <!-- Breadcrumb --> <div id="ViewBreadcrumb" class="mb-8"> <h1 class="text-lg text-center font-light relative px-7"> <!-- Cancel --> <button @click="$router.go(-1)" class="text-lg text-center px-2 py-1 absolute -left-2 -top-1" > <fa icon="chevron-left"></fa> </button> Import Existing Identity </h1> </div> <!-- Import Account Form --> <p class="text-center text-xl mb-4 font-light"> Enter your seed phrase below to import your identity on this device. </p> <input type="text" id="mnemonic" placeholder="Seed Phrase" class="block w-full rounded border border-slate-400 mb-4 px-3 py-2" v-model="mnemonic" /> {{ mnemonic }} <div class="mt-8"> <button id="import" @click="from_mnemonic()" class="block w-full text-center text-lg font-bold uppercase bg-blue-600 text-white px-2 py-3 rounded-md mb-2" > Import </button> <button @click="onCancelClick()" type="button" class="block w-full text-center text-md uppercase bg-slate-500 text-white px-1.5 py-2 rounded-md" > Cancel </button> </div> </section> </template> <script lang="ts"> import { Options, Vue } from "vue-class-component"; import { deriveAddress, newIdentifier } from "../libs/crypto"; import { db } from "@/db"; import { useAppStore } from "@/store/app"; @Options({ components: {}, }) export default class ImportAccountView extends Vue { mnemonic = ""; address = ""; privateHex = ""; publicHex = ""; UPORT_ROOT_DERIVATION_PATH = ""; public onCancelClick() { this.$router.back(); } public async from_mnemonic() { const mne: string = this.mnemonic.trim().toLowerCase(); if (this.mnemonic.trim().length > 0) { [ this.address, this.privateHex, this.publicHex, this.UPORT_ROOT_DERIVATION_PATH, ] = deriveAddress(mne); const newId = newIdentifier( this.address, this.publicHex, this.privateHex, this.UPORT_ROOT_DERIVATION_PATH ); try { await db.open(); const num_accounts = await db.accounts.count(); if (num_accounts === 0) { console.log("..."); await db.accounts.add({ publicKey: newId.keys[0].publicKeyHex, mnemonic: mne, identity: JSON.stringify(newId), dateCreated: new Date().getTime(), }); } useAppStore().setCondition("registered"); this.$router.push({ name: "account" }); } catch (err) { console.log("Error!"); console.log(err); } } } } </script>