From 8e99bd1f327c7531dba916b11863504f741ab747 Mon Sep 17 00:00:00 2001 From: Hermes Date: Mon, 28 Sep 2026 12:27:12 +0200 Subject: [PATCH] =?UTF-8?q?fix(auth):=20lock=20=E2=80=94=20=D1=84=D1=83?= =?UTF-8?q?=D0=BD=D0=BA=D1=86=D0=B8=D1=8F-=D0=B7=D0=B0=D0=B3=D0=BB=D1=83?= =?UTF-8?q?=D1=88=D0=BA=D0=B0=20=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=BE=D0=BA=D0=B8=20'no-lock'=20(=D0=B1?= =?UTF-8?q?=D0=B5=D0=B7=20Web=20Locks=20API=20=D0=BA=D0=BB=D0=B8=D0=B5?= =?UTF-8?q?=D0=BD=D1=82=20=D0=BF=D0=B0=D0=B4=D0=B0=D0=BB)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/supabaseClient.jsx | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/supabaseClient.jsx b/src/supabaseClient.jsx index b90f0d4..9728995 100644 --- a/src/supabaseClient.jsx +++ b/src/supabaseClient.jsx @@ -23,6 +23,14 @@ export const hasSupabaseConfig = Boolean(supabaseUrl && supabaseAnonKey); const STORAGE_KEY = "supersam-auth"; const KEY_KEY = "supersam-ak"; +// Web Locks API есть не везде (старые Safari/WebView, тестовая среда jsdom). +// supabase-js ждёт именно функцию лока, поэтому подставляем простой "лок без лока". +const memoryLock = (_name, _acquireTimeout, fn) => fn(); +const hasWebLocks = () => + typeof navigator !== "undefined" && + Boolean(navigator.locks) && + typeof navigator.locks.request === "function"; + function _getKey() { let key = localStorage.getItem(KEY_KEY); if (!key) { @@ -114,13 +122,8 @@ export const supabase = hasSupabaseConfig storage: secureStorage, autoRefreshToken: true, detectSessionInUrl: false, - // navigator.locks есть не везде (jsdom/старые окружения): тогда фиксированный lock - lock: - typeof navigator !== "undefined" && - navigator.locks && - typeof navigator.locks.request === "function" - ? undefined - : "no-lock", + // lock: без Web Locks API используем функцию-заглушку (иначе auth падает) + lock: hasWebLocks() ? undefined : memoryLock, }, global: { headers: { "x-application-name": "supersam" },