diff --git a/tabby-core/src/services/profiles.service.ts b/tabby-core/src/services/profiles.service.ts index fc3b4211..39e5625a 100644 --- a/tabby-core/src/services/profiles.service.ts +++ b/tabby-core/src/services/profiles.service.ts @@ -115,10 +115,11 @@ export class ProfilesService { async writeProfile (profile: PartialProfile): Promise { const cProfile = this.config.store.profiles.find(p => p.id === profile.id) if (cProfile) { - if (!profile.group) { - delete cProfile.group + // Fully replace the config + for (const k in cProfile) { + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete + delete cProfile[k] } - Object.assign(cProfile, profile) } } diff --git a/tabby-settings/src/components/profilesSettingsTab.component.ts b/tabby-settings/src/components/profilesSettingsTab.component.ts index 58439ca0..4bfe2cc4 100644 --- a/tabby-settings/src/components/profilesSettingsTab.component.ts +++ b/tabby-settings/src/components/profilesSettingsTab.component.ts @@ -70,25 +70,24 @@ export class ProfilesSettingsTabComponent extends BaseComponent { return } } - const profile: PartialProfile = deepClone(base) - delete profile.id + const baseProfile: PartialProfile = deepClone(base) + delete baseProfile.id if (base.isTemplate) { - profile.name = '' + baseProfile.name = '' } else if (!base.isBuiltin) { - profile.name = this.translate.instant('{name} copy', base) + baseProfile.name = this.translate.instant('{name} copy', base) } - profile.isBuiltin = false - profile.isTemplate = false - const result = await this.showProfileEditModal(profile) + baseProfile.isBuiltin = false + baseProfile.isTemplate = false + const result = await this.showProfileEditModal(baseProfile) if (!result) { return } - Object.assign(profile, result) - if (!profile.name) { - const cfgProxy = this.profilesService.getConfigProxyForProfile(profile) - profile.name = this.profilesService.providerForProfile(profile)?.getSuggestedName(cfgProxy) ?? this.translate.instant('{name} copy', base) + if (!result.name) { + const cfgProxy = this.profilesService.getConfigProxyForProfile(result) + result.name = this.profilesService.providerForProfile(result)?.getSuggestedName(cfgProxy) ?? this.translate.instant('{name} copy', base) } - await this.profilesService.newProfile(profile) + await this.profilesService.newProfile(result) await this.config.save() } @@ -97,8 +96,7 @@ export class ProfilesSettingsTabComponent extends BaseComponent { if (!result) { return } - Object.assign(profile, result) - await this.profilesService.writeProfile(profile) + await this.profilesService.writeProfile(result) await this.config.save() } @@ -119,12 +117,6 @@ export class ProfilesSettingsTabComponent extends BaseComponent { return null } - // Fully replace the config - for (const k in profile) { - // eslint-disable-next-line @typescript-eslint/no-dynamic-delete - delete profile[k] - } - result.type = provider.id return result } @@ -162,8 +154,7 @@ export class ProfilesSettingsTabComponent extends BaseComponent { if (!result) { return } - Object.assign(group, result) - await this.profilesService.writeProfileGroup(ProfilesSettingsTabComponent.collapsableIntoPartialProfileGroup(group)) + await this.profilesService.writeProfileGroup(ProfilesSettingsTabComponent.collapsableIntoPartialProfileGroup(result)) await this.config.save() }