UI: Refactoring

This commit is contained in:
Artem Dzhereleiko 2023-12-12 17:44:38 +02:00
parent 68359d2fc6
commit e9a9d93b0b

View File

@ -74,23 +74,10 @@ export class NotificationSettingsComponent extends PageComponent implements OnIn
private patchNotificationSettings(settings: NotificationUserSettings) {
const notificationSettingsControls: Array<AbstractControl> = [];
let preparedSettings;
if (settings.prefs) {
preparedSettings = this.prepareNotificationSettings(settings.prefs);
preparedSettings.forEach((setting) => {
if (!setting.enabled && Object.values(setting.enabledDeliveryMethods).some(deliveryMethod => deliveryMethod === true)) {
const enabledDeliveryMethod = deepClone(setting.enabledDeliveryMethods);
Object.keys(enabledDeliveryMethod).forEach(key => {
enabledDeliveryMethod[key] = false;
});
setting.enabledDeliveryMethods = enabledDeliveryMethod;
}
setting.enabledDeliveryMethods = Object.assign(
this.notificationDeliveryMethods.reduce((a, v) => ({ ...a, [v]: true}), {}),
setting.enabledDeliveryMethods
);
notificationSettingsControls.push(this.fb.control(setting, [Validators.required]));
});
this.prepareNotificationSettings(settings.prefs).forEach(setting =>
notificationSettingsControls.push(this.fb.control(setting, [Validators.required]))
);
}
this.notificationSettings.setControl('prefs', this.fb.array(notificationSettingsControls), {emitEvent: false});
}
@ -98,6 +85,17 @@ export class NotificationSettingsComponent extends PageComponent implements OnIn
private prepareNotificationSettings(prefs: any) {
return Object.entries(prefs).map((value: any) => {
value[1].name = value[0];
if (!value[1].enabled && Object.values(value[1].enabledDeliveryMethods).some(deliveryMethod => deliveryMethod === true)) {
const enabledDeliveryMethod = deepClone(value[1].enabledDeliveryMethods);
Object.keys(enabledDeliveryMethod).forEach(key => {
enabledDeliveryMethod[key] = false;
});
value[1].enabledDeliveryMethods = enabledDeliveryMethod;
}
value[1].enabledDeliveryMethods = Object.assign(
this.notificationDeliveryMethods.reduce((a, v) => ({ ...a, [v]: true}), {}),
value[1].enabledDeliveryMethods
);
return value[1];
});
}