diff --git a/web/src/routes/settings/+page.svelte b/web/src/routes/settings/+page.svelte index c825699..07f307a 100644 --- a/web/src/routes/settings/+page.svelte +++ b/web/src/routes/settings/+page.svelte @@ -105,25 +105,25 @@ revision_retention_minutes: '' }; - const routerId = knownFields.bird_router_id.trim(); + const routerId = String(knownFields.bird_router_id ?? '').trim(); if (routerId && !isValidIPv4(routerId)) errors.bird_router_id = 'Введите корректный IPv4 адрес'; - const localV4 = knownFields.bird_local_ipv4.trim(); + const localV4 = String(knownFields.bird_local_ipv4 ?? '').trim(); if (localV4 && !isValidIPv4(localV4)) errors.bird_local_ipv4 = 'Введите корректный IPv4 адрес'; - const localV6 = knownFields.bird_local_ipv6.trim(); + const localV6 = String(knownFields.bird_local_ipv6 ?? '').trim(); if (localV6 && !isValidIPv6(localV6)) errors.bird_local_ipv6 = 'Введите корректный IPv6 адрес'; - const asn = knownFields.bird_local_asn.trim(); + const asn = String(knownFields.bird_local_asn ?? '').trim(); if (asn && !isPositiveInt(asn)) errors.bird_local_asn = 'ASN должен быть целым числом больше 0'; - const bgpV4 = knownFields.bird_bgp_source_ipv4.trim(); + const bgpV4 = String(knownFields.bird_bgp_source_ipv4 ?? '').trim(); if (bgpV4 && !isValidIPv4(bgpV4)) errors.bird_bgp_source_ipv4 = 'Введите корректный IPv4 адрес'; - const bgpV6 = knownFields.bird_bgp_source_ipv6.trim(); + const bgpV6 = String(knownFields.bird_bgp_source_ipv6 ?? '').trim(); if (bgpV6 && !isValidIPv6(bgpV6)) errors.bird_bgp_source_ipv6 = 'Введите корректный IPv6 адрес'; - const revisionRetentionMinutes = knownFields.revision_retention_minutes.trim(); + const revisionRetentionMinutes = String(knownFields.revision_retention_minutes ?? '').trim(); if (revisionRetentionMinutes) { const ttl = Number(revisionRetentionMinutes); if ( @@ -210,7 +210,7 @@ if (loadingSettings || savingSettings || hasValidationErrors) return false; const hasKnownValues = knownFieldKeys.some((key) => { - const value = knownFields[key].trim(); + const value = String(knownFields[key] ?? '').trim(); return value !== '' && !knownFieldErrors[key]; }); const hasAdditionalValues = additionalSettings.some((entry) => entry.key.trim() !== ''); @@ -219,11 +219,14 @@ }); async function saveApiSettings() { - if (!canSaveSettings) return; + if (!canSaveSettings) { + toast.error('Нечего сохранять или есть ошибки в полях'); + return; + } const payload: Record = {}; for (const key of knownFieldKeys) { - const value = knownFields[key].trim(); + const value = String(knownFields[key] ?? '').trim(); if (!value || knownFieldErrors[key]) continue; if (key === 'bird_local_asn' || key === 'revision_retention_minutes') payload[key] = Number(value); else payload[key] = value;