status check

This commit is contained in:
sdarbinyan
2026-05-13 14:47:02 +04:00
parent e9b50078fe
commit 2554935875

View File

@@ -82,6 +82,8 @@ export class FastcheckPage {
// Non-blocking settings hint shown above the form when /settings fails. // Non-blocking settings hint shown above the form when /settings fails.
settingsError = signal<string>(''); settingsError = signal<string>('');
settingsLoaded = signal<boolean>(false); settingsLoaded = signal<boolean>(false);
// True only after /settings returned 200 — used to disable Pay button otherwise.
settingsOk = signal<boolean>(false);
popupOpen = signal<boolean>(false); popupOpen = signal<boolean>(false);
popupLoading = signal<boolean>(false); popupLoading = signal<boolean>(false);
@@ -148,6 +150,24 @@ export class FastcheckPage {
// Always call settings on each load — may return active check data to autofill. // Always call settings on each load — may return active check data to autofill.
this.loadSettings(!!created || !!iidParam); this.loadSettings(!!created || !!iidParam);
// Connectivity check — makes visible requests in DevTools and surfaces
// backend availability issues early.
this.pingBackends();
}
/** Fire GET /ping on both backends and log status. Non-blocking. */
private pingBackends(): void {
const targets = [
{ name: 'fastcheck', url: `${FASTCHECK_API}/ping` },
{ name: 'qr-vitanova', url: `${QR_VITANOVA_API}/ping` }
];
for (const t of targets) {
this.http.get(t.url, { observe: 'response' }).subscribe({
next: (res) => console.debug(`[ping:${t.name}]`, res.status, t.url),
error: (err) => console.warn(`[ping:${t.name}] failed`, err?.status ?? err, t.url)
});
}
} }
/** /**
@@ -162,6 +182,7 @@ export class FastcheckPage {
if (!id) { if (!id) {
this.settingsError.set(this.t('errors.settings_missing_id')); this.settingsError.set(this.t('errors.settings_missing_id'));
this.settingsLoaded.set(true); this.settingsLoaded.set(true);
this.settingsOk.set(false);
return; return;
} }
@@ -170,11 +191,13 @@ export class FastcheckPage {
next: (res) => { next: (res) => {
this.settingsLoaded.set(true); this.settingsLoaded.set(true);
this.settingsError.set(''); this.settingsError.set('');
this.settingsOk.set(true);
this.applySettings(res ?? {}, alreadyAutofilled); this.applySettings(res ?? {}, alreadyAutofilled);
}, },
error: () => { error: () => {
// Non-blocking: keep manual mode available. // Non-blocking: keep manual mode available, but Pay stays disabled.
this.settingsLoaded.set(true); this.settingsLoaded.set(true);
this.settingsOk.set(false);
this.settingsError.set(this.t('errors.settings_failed')); this.settingsError.set(this.t('errors.settings_failed'));
} }
}); });