From 83c0c18db2c5fd0b52bf8fff3223d820685eadb9 Mon Sep 17 00:00:00 2001 From: Jose Olarte III Date: Fri, 29 Aug 2025 16:41:19 +0800 Subject: [PATCH] fix: persist identity names per user instead of globally Fixes issue where identity names were not saved when switching between multiple identities. Names were being saved to master settings instead of user-specific settings. Changes: - UserNameDialog: Load/save names from/to user-specific settings - NewEditAccountView: Save names to user-specific settings for active DID - Both components now use $accountSettings() and $saveUserSettings() instead of $settings() and $updateSettings() Each identity now properly retains their assigned name when switching between identities. Previously only "User Zero" would show their name due to using master settings instead of per-identity settings. Fixes: Identity name persistence across identity switches --- src/components/UserNameDialog.vue | 16 ++++++++++++++-- src/views/NewEditAccountView.vue | 22 ++++++++++++++++++---- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/src/components/UserNameDialog.vue b/src/components/UserNameDialog.vue index d71ee9fc..47607dac 100644 --- a/src/components/UserNameDialog.vue +++ b/src/components/UserNameDialog.vue @@ -84,7 +84,8 @@ export default class UserNameDialog extends Vue { */ async open(aCallback?: (name?: string) => void) { this.callback = aCallback || this.callback; - const settings = await this.$settings(); + // Load from account-specific settings instead of master settings + const settings = await this.$accountSettings(); this.givenName = settings.firstName || ""; this.visible = true; } @@ -95,7 +96,18 @@ export default class UserNameDialog extends Vue { */ async onClickSaveChanges() { try { - await this.$updateSettings({ firstName: this.givenName }); + // Get the current active DID to save to user-specific settings + const settings = await this.$accountSettings(); + const activeDid = settings.activeDid; + + if (activeDid) { + // Save to user-specific settings for the current identity + await this.$saveUserSettings(activeDid, { firstName: this.givenName }); + } else { + // Fallback to master settings if no active DID + await this.$saveSettings({ firstName: this.givenName }); + } + this.visible = false; this.callback(this.givenName); } catch (error) { diff --git a/src/views/NewEditAccountView.vue b/src/views/NewEditAccountView.vue index 78e709f2..98be3282 100644 --- a/src/views/NewEditAccountView.vue +++ b/src/views/NewEditAccountView.vue @@ -110,10 +110,24 @@ export default class NewEditAccountView extends Vue { * @async */ async onClickSaveChanges() { - await this.$updateSettings({ - firstName: this.givenName, - lastName: "", // deprecated, pre v 0.1.3 - }); + // Get the current active DID to save to user-specific settings + const settings = await this.$accountSettings(); + const activeDid = settings.activeDid; + + if (activeDid) { + // Save to user-specific settings for the current identity + await this.$saveUserSettings(activeDid, { + firstName: this.givenName, + lastName: "", // deprecated, pre v 0.1.3 + }); + } else { + // Fallback to master settings if no active DID + await this.$saveSettings({ + firstName: this.givenName, + lastName: "", // deprecated, pre v 0.1.3 + }); + } + this.$router.back(); }