ref(settings): avoid useless object assign & deleting profile fields one by one

This commit is contained in:
Clem 2023-09-04 20:04:47 +02:00
parent 0d0bde82a0
commit e4169a54aa

View File

@ -70,25 +70,24 @@ export class ProfilesSettingsTabComponent extends BaseComponent {
return return
} }
} }
const profile: PartialProfile<Profile> = deepClone(base) const baseProfile: PartialProfile<Profile> = deepClone(base)
delete profile.id delete baseProfile.id
if (base.isTemplate) { if (base.isTemplate) {
profile.name = '' baseProfile.name = ''
} else if (!base.isBuiltin) { } else if (!base.isBuiltin) {
profile.name = this.translate.instant('{name} copy', base) baseProfile.name = this.translate.instant('{name} copy', base)
} }
profile.isBuiltin = false baseProfile.isBuiltin = false
profile.isTemplate = false baseProfile.isTemplate = false
const result = await this.showProfileEditModal(profile) const result = await this.showProfileEditModal(baseProfile)
if (!result) { if (!result) {
return return
} }
Object.assign(profile, result) if (!result.name) {
if (!profile.name) { const cfgProxy = this.profilesService.getConfigProxyForProfile(result)
const cfgProxy = this.profilesService.getConfigProxyForProfile(profile) result.name = this.profilesService.providerForProfile(result)?.getSuggestedName(cfgProxy) ?? this.translate.instant('{name} copy', base)
profile.name = this.profilesService.providerForProfile(profile)?.getSuggestedName(cfgProxy) ?? this.translate.instant('{name} copy', base)
} }
await this.profilesService.newProfile(profile) await this.profilesService.newProfile(result)
await this.config.save() await this.config.save()
} }
@ -97,8 +96,7 @@ export class ProfilesSettingsTabComponent extends BaseComponent {
if (!result) { if (!result) {
return return
} }
Object.assign(profile, result) await this.profilesService.writeProfile(result)
await this.profilesService.writeProfile(profile)
await this.config.save() await this.config.save()
} }
@ -119,12 +117,6 @@ export class ProfilesSettingsTabComponent extends BaseComponent {
return null 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 result.type = provider.id
return result return result
} }
@ -162,8 +154,7 @@ export class ProfilesSettingsTabComponent extends BaseComponent {
if (!result) { if (!result) {
return return
} }
Object.assign(group, result) await this.profilesService.writeProfileGroup(ProfilesSettingsTabComponent.collapsableIntoPartialProfileGroup(result))
await this.profilesService.writeProfileGroup(ProfilesSettingsTabComponent.collapsableIntoPartialProfileGroup(group))
await this.config.save() await this.config.save()
} }