Client-debug: логирование fetch в /api/v1/debug/log
This commit is contained in:
parent
1f2c69c3de
commit
9a9d8a7761
@ -54,11 +54,24 @@ async function api(path, opts = {}, _retry = 0) {
|
|||||||
// timeout 15s — иначе UI висит вечно
|
// timeout 15s — иначе UI висит вечно
|
||||||
const controller = new AbortController();
|
const controller = new AbortController();
|
||||||
const tid = setTimeout(() => controller.abort(), 15000);
|
const tid = setTimeout(() => controller.abort(), 15000);
|
||||||
|
const t0 = Date.now();
|
||||||
try {
|
try {
|
||||||
r = await fetch(API_BASE + path, { ...o, signal: controller.signal });
|
r = await fetch(API_BASE + path, { ...o, signal: controller.signal });
|
||||||
} catch (networkErr) {
|
} catch (networkErr) {
|
||||||
clearTimeout(tid);
|
clearTimeout(tid);
|
||||||
console.warn('fetch network error:', networkErr);
|
const ms = Date.now() - t0;
|
||||||
|
console.warn('fetch network error:', networkErr, 'ms:', ms);
|
||||||
|
// детальный лог на сервер для дебага
|
||||||
|
try {
|
||||||
|
fetch(API_BASE + '/api/v1/debug/log', {
|
||||||
|
method: 'POST',
|
||||||
|
headers: { 'Content-Type': 'application/json' },
|
||||||
|
body: JSON.stringify({
|
||||||
|
path, status: 0, ms, ua: navigator.userAgent, err: String(networkErr), isTelegram: !!(window.Telegram && window.Telegram.WebApp),
|
||||||
|
}),
|
||||||
|
keepalive: true,
|
||||||
|
}).catch(() => {});
|
||||||
|
} catch {}
|
||||||
if (networkErr.name === 'AbortError') {
|
if (networkErr.name === 'AbortError') {
|
||||||
throw new Error('Сервер не отвечает (таймаут 15с)');
|
throw new Error('Сервер не отвечает (таймаут 15с)');
|
||||||
}
|
}
|
||||||
@ -69,6 +82,18 @@ async function api(path, opts = {}, _retry = 0) {
|
|||||||
throw new Error('Нет связи с сервером');
|
throw new Error('Нет связи с сервером');
|
||||||
}
|
}
|
||||||
clearTimeout(tid);
|
clearTimeout(tid);
|
||||||
|
const ms = Date.now() - t0;
|
||||||
|
// логируем всё на сервер для отладки с iOS
|
||||||
|
try {
|
||||||
|
fetch(API_BASE + '/api/v1/debug/log', {
|
||||||
|
method: 'POST',
|
||||||
|
headers: { 'Content-Type': 'application/json' },
|
||||||
|
body: JSON.stringify({
|
||||||
|
path, status: r.status, ms, ua: navigator.userAgent.substring(0, 80), isTelegram: !!(window.Telegram && window.Telegram.WebApp),
|
||||||
|
}),
|
||||||
|
keepalive: true,
|
||||||
|
}).catch(() => {});
|
||||||
|
} catch {}
|
||||||
if (r.status === 401 && Store.refresh && !opts._isRefresh) {
|
if (r.status === 401 && Store.refresh && !opts._isRefresh) {
|
||||||
try {
|
try {
|
||||||
const r2 = await fetch(API_BASE + '/api/v1/auth/refresh', {
|
const r2 = await fetch(API_BASE + '/api/v1/auth/refresh', {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user