From 6f74d05184aebe33ef7bbef699f2cfeea50252ae Mon Sep 17 00:00:00 2001 From: wasrusgen Date: Mon, 18 May 2026 08:35:42 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=D1=82=D0=B0=D0=B9=D0=BC=D0=B0=D1=83?= =?UTF-8?q?=D1=82=2015=D1=81=20=D0=BD=D0=B0=20=D0=B2=D1=81=D0=B5=20fetch?= =?UTF-8?q?=20=D0=B2=20clients.js=20=E2=80=94=20=D0=BA=D0=BD=D0=BE=D0=BF?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=B1=D0=BE=D0=BB=D1=8C=D1=88=D0=B5=20=D0=BD?= =?UTF-8?q?=D0=B5=20=D0=B2=D0=B8=D1=81=D1=8F=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - _fetchWithTimeout() — единый fetch с AbortController - saveClientNote, fetchClientNote, fetchClients, fetchMeasurements теперь через таймаут вместо бесконечного ожидания - При таймауте показывает 'Сервер не отвечает — попробуйте ещё раз' - Версия clients.js: 20260518e --- miniapp/assets/clients.js | 65 +++++++++++++++++++++------------------ miniapp/index.html | 2 +- 2 files changed, 36 insertions(+), 31 deletions(-) diff --git a/miniapp/assets/clients.js b/miniapp/assets/clients.js index 1e6d95d..acbaec6 100644 --- a/miniapp/assets/clients.js +++ b/miniapp/assets/clients.js @@ -1765,31 +1765,41 @@ const Clients = (function () { return section; } + async function _fetchWithTimeout(url, body, timeoutMs = 15000) { + const ctrl = new AbortController(); + const timer = setTimeout(() => ctrl.abort(), timeoutMs); + try { + const res = await fetch(url, { + method: "POST", + signal: ctrl.signal, + body: JSON.stringify(body), + }); + return await res.json(); + } catch (e) { + if (e.name === "AbortError") throw new Error("Сервер не отвечает — попробуйте ещё раз"); + throw e; + } finally { + clearTimeout(timer); + } + } + async function fetchClientNote(client) { - const res = await fetch(`${BACKEND_URL}/api/client_note`, { - method: "POST", - body: JSON.stringify({ - initData: tg?.initData || "", - initDataUnsafe: tg?.initDataUnsafe || null, - client_name: client.client_name || "", - client_phone: client.client_phone || "", - }), + return _fetchWithTimeout(`${BACKEND_URL}/api/client_note`, { + initData: tg?.initData || "", + initDataUnsafe: tg?.initDataUnsafe || null, + client_name: client.client_name || "", + client_phone: client.client_phone || "", }); - return await res.json(); } async function saveClientNote(client, note) { - const res = await fetch(`${BACKEND_URL}/api/client_note`, { - method: "POST", - body: JSON.stringify({ - initData: tg?.initData || "", - initDataUnsafe: tg?.initDataUnsafe || null, - client_name: client.client_name || "", - client_phone: client.client_phone || "", - note: note || "", - }), + return _fetchWithTimeout(`${BACKEND_URL}/api/client_note`, { + initData: tg?.initData || "", + initDataUnsafe: tg?.initDataUnsafe || null, + client_name: client.client_name || "", + client_phone: client.client_phone || "", + note: note || "", }); - return await res.json(); } function setupVoiceInput(micBtn, textarea, status) { @@ -1825,14 +1835,10 @@ const Clients = (function () { async function fetchClients() { if (!BACKEND_URL) throw new Error("BACKEND_URL не задан"); - const res = await fetch(`${BACKEND_URL}/api/clients`, { - method: "POST", - body: JSON.stringify({ - initData: tg?.initData || "", - initDataUnsafe: tg?.initDataUnsafe || null, - }), + return _fetchWithTimeout(`${BACKEND_URL}/api/clients`, { + initData: tg?.initData || "", + initDataUnsafe: tg?.initDataUnsafe || null, }); - return await res.json(); } async function fetchLead(leadId) { @@ -1846,11 +1852,10 @@ const Clients = (function () { async function fetchMeasurements(filters = {}) { if (!BACKEND_URL) throw new Error("BACKEND_URL не задан"); - const res = await fetch(`${BACKEND_URL}/api/measurements`, { - method: "POST", - body: JSON.stringify({ initData: tg?.initData || "", ...filters }), + return _fetchWithTimeout(`${BACKEND_URL}/api/measurements`, { + initData: tg?.initData || "", + ...filters, }); - return await res.json(); } function initial(name) { diff --git a/miniapp/index.html b/miniapp/index.html index 3c2d319..8bfbc73 100644 --- a/miniapp/index.html +++ b/miniapp/index.html @@ -39,7 +39,7 @@ - +