ui: resolver: Better handling of errors

This commit is contained in:
nemunaire 2023-01-09 12:25:29 +01:00
parent ed427191f2
commit 2669d5e7ff

View File

@ -8,7 +8,7 @@
Table, Table,
} from 'sveltestrap'; } from 'sveltestrap';
import { resolve } from '$lib/api/resolver'; import { resolve as APIResolve } from '$lib/api/resolver';
import ResolverForm from '$lib/components/resolver/Form.svelte'; import ResolverForm from '$lib/components/resolver/Form.svelte';
import { nsttl, nsrrtype } from '$lib/dns'; import { nsttl, nsrrtype } from '$lib/dns';
import { recordsFields } from '$lib/resolver'; import { recordsFields } from '$lib/resolver';
@ -19,17 +19,16 @@
export let data: {form?: ResolverFormT; domain: string; showDNSSEC: boolean;}; export let data: {form?: ResolverFormT; domain: string; showDNSSEC: boolean;};
let question: ResolverFormT | null = null; let question: ResolverFormT | null = null;
let responses: Array<any> | 'no-answer' | null = null; let responses: Array<any> | 'no-answer' | null = null;
let error_response: string | null = null;
let request_pending = false; let request_pending = false;
$: { function resolve(form: ResolverFormT) {
if (!data.form) { if (!form.domain) return;
data.form = {domain: "", type: "ANY", resolver: "local"};
}
data.form.domain = data.domain;
resolve(data.form) APIResolve(form)
.then( .then(
(response) => { (response) => {
error_response = null;
question = Object.assign({ }, data.form) question = Object.assign({ }, data.form)
if (response.Answer) { if (response.Answer) {
responses = response.Answer; responses = response.Answer;
@ -39,13 +38,24 @@
request_pending = false; request_pending = false;
}, },
(error) => { (error) => {
responses = null;
error_response = error;
toasts.addErrorToast({ toasts.addErrorToast({
title: $t('errors.resolve'), title: $t('errors.resolve'),
message: error, message: error,
timeout: 5000, timeout: 5000,
}); });
request_pending = false; request_pending = false;
}) });
}
$: {
if (!data.form) {
data.form = {domain: "", type: "ANY", resolver: "local"};
}
data.form.domain = data.domain;
resolve(data.form);
} }
function filteredResponses(responses: Array<any>, showDNSSEC: boolean): Array<any> { function filteredResponses(responses: Array<any>, showDNSSEC: boolean): Array<any> {
@ -99,7 +109,11 @@
/> />
</div> </div>
</Col> </Col>
{#if responses === 'no-answer'} {#if error_response !== null}
<Col md="8" class="pt-3">
<h3 class="text-center text-danger">{error_response}</h3>
</Col>
{:else if responses === 'no-answer'}
<Col md="8" class="pt-2"> <Col md="8" class="pt-2">
<h3>{$t('common.records', { n: 0, type: question?question.type:"-" })}</h3> <h3>{$t('common.records', { n: 0, type: question?question.type:"-" })}</h3>
</Col> </Col>