From 83c0c18db2c5fd0b52bf8fff3223d820685eadb9 Mon Sep 17 00:00:00 2001 From: Jose Olarte III Date: Fri, 29 Aug 2025 16:41:19 +0800 Subject: [PATCH 1/3] 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(); } -- 2.30.2 From dde37e73e1a7c9de98fdcab8eb1ae318b43a201b Mon Sep 17 00:00:00 2001 From: Jose Olarte III Date: Fri, 29 Aug 2025 16:41:46 +0800 Subject: [PATCH 2/3] Lint fixes --- src/components/UserNameDialog.vue | 4 ++-- src/views/NewEditAccountView.vue | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/UserNameDialog.vue b/src/components/UserNameDialog.vue index 47607dac..7a426e7f 100644 --- a/src/components/UserNameDialog.vue +++ b/src/components/UserNameDialog.vue @@ -99,7 +99,7 @@ export default class UserNameDialog extends Vue { // 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 }); @@ -107,7 +107,7 @@ export default class UserNameDialog extends Vue { // 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 98be3282..7db96689 100644 --- a/src/views/NewEditAccountView.vue +++ b/src/views/NewEditAccountView.vue @@ -113,7 +113,7 @@ export default class NewEditAccountView extends Vue { // 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, { @@ -127,7 +127,7 @@ export default class NewEditAccountView extends Vue { lastName: "", // deprecated, pre v 0.1.3 }); } - + this.$router.back(); } -- 2.30.2 From 5f8d1fc8c6529efae09abf69ca24950ae3374a14 Mon Sep 17 00:00:00 2001 From: Jose Olarte III Date: Mon, 1 Sep 2025 16:54:36 +0800 Subject: [PATCH 3/3] refactor: remove deprecated lastName field from user settings - Remove lastName field from $saveUserSettings and $saveSettings calls - Clean up deprecated pre v0.1.3 code --- src/views/NewEditAccountView.vue | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/views/NewEditAccountView.vue b/src/views/NewEditAccountView.vue index 7db96689..d1349e5a 100644 --- a/src/views/NewEditAccountView.vue +++ b/src/views/NewEditAccountView.vue @@ -118,13 +118,11 @@ export default class NewEditAccountView extends Vue { // 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 }); } -- 2.30.2