Browse Source

Reapply "feat: migrate phase 1 critical identity components to active identity façade"

This reverts commit 6c1c109cbd.
activedid_migration
Matthew Raymer 14 hours ago
parent
commit
a6a461d358
  1. 3
      src/views/ClaimAddRawView.vue
  2. 3
      src/views/HomeView.vue
  3. 97
      src/views/IdentitySwitcherView.vue
  4. 9
      src/views/ImportDerivedAccountView.vue

3
src/views/ClaimAddRawView.vue

@ -112,7 +112,8 @@ export default class ClaimAddRawView extends Vue {
*/ */
private async initializeSettings() { private async initializeSettings() {
const settings = await this.$accountSettings(); const settings = await this.$accountSettings();
this.activeDid = settings.activeDid || ""; // Use new façade method with legacy fallback
this.activeDid = (await this.$getActiveDid()) || "";
this.apiServer = settings.apiServer || ""; this.apiServer = settings.apiServer || "";
} }

3
src/views/HomeView.vue

@ -538,7 +538,8 @@ export default class HomeView extends Vue {
// **CRITICAL**: Ensure correct API server for platform // **CRITICAL**: Ensure correct API server for platform
await this.ensureCorrectApiServer(); await this.ensureCorrectApiServer();
this.activeDid = settings.activeDid || ""; // Use new façade method with legacy fallback
this.activeDid = (await this.$getActiveDid()) || "";
// Load contacts with graceful fallback // Load contacts with graceful fallback
try { try {

97
src/views/IdentitySwitcherView.vue

@ -46,7 +46,7 @@
<div class="flex items-center justify-between mb-2"> <div class="flex items-center justify-between mb-2">
<div <div
:class="identityListItemClasses" :class="identityListItemClasses"
@click="switchAccount(ident.did)" @click="switchIdentity(ident.did)"
> >
<font-awesome <font-awesome
v-if="ident.did === activeDid" v-if="ident.did === activeDid"
@ -94,7 +94,7 @@
<a <a
href="#" href="#"
:class="secondaryButtonClasses" :class="secondaryButtonClasses"
@click="switchAccount(undefined)" @click="switchIdentity(undefined)"
> >
No Identity No Identity
</a> </a>
@ -116,6 +116,7 @@ import {
NOTIFY_DELETE_IDENTITY_CONFIRM, NOTIFY_DELETE_IDENTITY_CONFIRM,
} from "@/constants/notifications"; } from "@/constants/notifications";
import { Account } from "@/db/tables/accounts"; import { Account } from "@/db/tables/accounts";
import { FLAGS } from "@/config/featureFlags";
@Component({ @Component({
components: { QuickNav }, components: { QuickNav },
@ -200,7 +201,8 @@ export default class IdentitySwitcherView extends Vue {
async created() { async created() {
try { try {
const settings = await this.$accountSettings(); const settings = await this.$accountSettings();
this.activeDid = settings.activeDid || ""; // Use new façade method with legacy fallback
this.activeDid = (await this.$getActiveDid()) || "";
this.apiServer = settings.apiServer || ""; this.apiServer = settings.apiServer || "";
this.apiServerInput = settings.apiServer || ""; this.apiServerInput = settings.apiServer || "";
@ -221,46 +223,63 @@ export default class IdentitySwitcherView extends Vue {
} }
} }
async switchAccount(did?: string) { async switchIdentity(did?: string) {
// Save the new active DID to master settings try {
await this.$saveSettings({ activeDid: did }); if (did) {
// Use new façade method instead of legacy settings
await this.$setActiveDid(did);
// Check if we need to load user-specific settings for the new DID // Update local state
if (did) { this.activeDid = did;
try {
const newSettings = await this.$accountSettings(did); // Legacy fallback - remove after Phase C
logger.info( if (!FLAGS.USE_ACTIVE_IDENTITY_ONLY) {
"[IdentitySwitcher Settings Trace] ✅ New account settings loaded", await this.$saveSettings({ activeDid: did });
{ }
did,
settingsKeys: Object.keys(newSettings).filter( // Check if we need to load user-specific settings for the new DID
(k) => try {
k in newSettings && const newSettings = await this.$accountSettings(did);
newSettings[k as keyof typeof newSettings] !== undefined, logger.info(
), "[IdentitySwitcher Settings Trace] ✅ New account settings loaded",
}, {
); did,
} catch (error) { settingsKeys: Object.keys(newSettings).filter(
logger.warn( (k) =>
"[IdentitySwitcher Settings Trace] ⚠️ Error loading new account settings", k in newSettings &&
{ newSettings[k as keyof typeof newSettings] !== undefined,
did, ),
error: error instanceof Error ? error.message : String(error), },
}, );
); } catch (error) {
// Handle error silently - user settings will be loaded when needed logger.warn(
"[IdentitySwitcher Settings Trace] ⚠️ Error loading new account settings",
{
did,
error: error instanceof Error ? error.message : String(error),
},
);
// Handle error silently - user settings will be loaded when needed
}
} else {
// Handle "No Identity" case
this.activeDid = "";
// Note: We don't clear active DID in database for safety
} }
}
logger.info( logger.info(
"[IdentitySwitcher Settings Trace] 🔄 Navigating to home to trigger watcher", "[IdentitySwitcher Settings Trace] 🔄 Navigating to home to trigger watcher",
{ {
newDid: did, newDid: did,
}, },
); );
// Navigate to home page to trigger the watcher // Navigate to home page to trigger the watcher
this.$router.push({ name: "home" }); this.$router.push({ name: "home" });
} catch (error) {
logger.error("[IdentitySwitcher] Error switching identity", error);
this.notify.error("Error switching identity", TIMEOUTS.SHORT);
}
} }
async deleteAccount(id: string) { async deleteAccount(id: string) {

9
src/views/ImportDerivedAccountView.vue

@ -173,8 +173,13 @@ export default class ImportAccountView extends Vue {
try { try {
await saveNewIdentity(newId, mne, newDerivPath); await saveNewIdentity(newId, mne, newDerivPath);
// record that as the active DID // record that as the active DID using new façade
await this.$saveSettings({ activeDid: newId.did }); await this.$setActiveDid(newId.did);
// Legacy fallback - remove after Phase C
if (!FLAGS.USE_ACTIVE_IDENTITY_ONLY) {
await this.$saveSettings({ activeDid: newId.did });
}
await this.$saveUserSettings(newId.did, { await this.$saveUserSettings(newId.did, {
isRegistered: false, isRegistered: false,
}); });

Loading…
Cancel
Save