Опрос списка тикетов для has_unread; настройка tickets_poll_ms
This commit is contained in:
+9
-5
@@ -8,11 +8,14 @@
|
||||
const supportWsBaseOverride = (root.dataset.supportWsBase || "").trim();
|
||||
/** Включается в NC: `occ config:app:set f7support client_read_receipts --value=1` после выката API `POST .../read`. */
|
||||
const clientReadReceiptsEnabled = root.dataset.clientReadReceipts === "1";
|
||||
const ticketsPollIntervalMs = (() => {
|
||||
const n = parseInt(String(root.dataset.messagesPollMs || "3000"), 10);
|
||||
if (!Number.isFinite(n)) return 3000;
|
||||
return Math.min(120000, Math.max(3000, n));
|
||||
})();
|
||||
const ticketsPollMsRaw = parseInt(
|
||||
String(root.dataset.ticketsPollMs || root.dataset.messagesPollMs || "").trim(),
|
||||
10
|
||||
);
|
||||
const ticketsPollMsParsed = Number.isFinite(ticketsPollMsRaw) && ticketsPollMsRaw >= 0 ? ticketsPollMsRaw : 3000;
|
||||
/** Интервал опроса GET /api/client/tickets (мс). 0 — выключить. Иначе 3000…120000. WebSocket только у открытого тикета; без опроса зелёная точка по другим тикетам не обновится. Устаревшее имя: data-messages-poll-ms. */
|
||||
const ticketsPollIntervalMs =
|
||||
ticketsPollMsParsed === 0 ? 0 : Math.min(120000, Math.max(3000, ticketsPollMsParsed));
|
||||
|
||||
const RASTER_IMAGE_EXT = new Set(["jpg", "jpeg", "png", "gif", "webp", "bmp", "tif", "tiff", "heic", "heif"]);
|
||||
const RASTER_IMAGE_MIME = new Set([
|
||||
@@ -769,6 +772,7 @@
|
||||
clearInterval(state.ticketsPollTimer);
|
||||
state.ticketsPollTimer = null;
|
||||
}
|
||||
if (ticketsPollIntervalMs === 0) return;
|
||||
state.ticketsPollTimer = window.setInterval(() => {
|
||||
if (document.visibilityState === "hidden") return;
|
||||
fetchTickets().catch(() => {});
|
||||
|
||||
Reference in New Issue
Block a user