fix(auth): lock — функция-заглушка вместо строки 'no-lock' (без Web Locks API клиент падал)

This commit is contained in:
Hermes 2026-09-28 12:27:12 +02:00
parent 8fa05f1746
commit 8e99bd1f32
1 changed files with 10 additions and 7 deletions

View File

@ -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" },