feat: move database migration link from account view to start view

- Remove database migration link from AccountViewView.vue
- Add new "Database Tools" section to StartView.vue
- Improve user flow by making database tools accessible from start page
- Maintain consistent styling and functionality
- Clean up account view to focus on account-specific settings

The database migration feature is now logically grouped with other
identity-related operations and more discoverable for users.
This commit is contained in:
Matthew Raymer
2025-06-19 05:51:59 +00:00
parent 9787763e4b
commit 51ce2bae9c
4 changed files with 56 additions and 41 deletions

View File

@@ -88,17 +88,9 @@ import { Router } from "vue-router";
import { AppString, NotificationIface, USE_DEXIE_DB } from "../constants/app";
import * as databaseUtil from "../db/databaseUtil";
import {
accountsDBPromise,
retrieveSettingsForActiveAccount,
} from "../db/index";
import {
DEFAULT_ROOT_DERIVATION_PATH,
deriveAddress,
newIdentifier,
} from "../libs/crypto";
import { retrieveAccountCount, saveNewIdentity } from "../libs/util";
import { PlatformServiceFactory } from "@/services/PlatformServiceFactory";
import { retrieveSettingsForActiveAccount } from "../db/index";
import { DEFAULT_ROOT_DERIVATION_PATH } from "../libs/crypto";
import { retrieveAccountCount, importFromMnemonic } from "../libs/util";
import { logger } from "../utils/logger";
@Component({
@@ -115,12 +107,9 @@ export default class ImportAccountView extends Vue {
$router!: Router;
apiServer = "";
address = "";
derivationPath = DEFAULT_ROOT_DERIVATION_PATH;
mnemonic = "";
numAccounts = 0;
privateHex = "";
publicHex = "";
showAdvanced = false;
shouldErase = false;
@@ -143,33 +132,16 @@ export default class ImportAccountView extends Vue {
}
public async fromMnemonic() {
const mne: string = this.mnemonic.trim().toLowerCase();
try {
[this.address, this.privateHex, this.publicHex] = deriveAddress(
mne,
await importFromMnemonic(
this.mnemonic,
this.derivationPath,
this.shouldErase,
);
const newId = newIdentifier(
this.address,
this.publicHex,
this.privateHex,
this.derivationPath,
);
const accountsDB = await accountsDBPromise;
if (this.shouldErase) {
const platformService = PlatformServiceFactory.getInstance();
await platformService.dbExec("DELETE FROM accounts");
if (USE_DEXIE_DB) {
await accountsDB.accounts.clear();
}
}
await saveNewIdentity(newId, mne, this.derivationPath);
this.$router.push({ name: "account" });
// eslint-disable-next-line @typescript-eslint/no-explicit-any
} catch (err: any) {
logger.error("Error saving mnemonic & updating settings:", err);
logger.error("Error importing from mnemonic:", err);
if (err == "Error: invalid mnemonic") {
this.$notify(
{