chatdesk-ui/chatdesk-ui/lib/supabase/browser-client.ts

65 lines
2.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// import { createBrowserClient } from "@supabase/ssr"
// import { getRuntimeEnv } from "@/lib/ipconfig"
// import { Database } from "@/supabase/types"
// export const supabase = createBrowserClient<Database>(
// getRuntimeEnv("SUPABASE_URL") ?? "http://localhost:8000",
// process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY! // ✅ 编译时写死,照你意图
// )
// import { createBrowserClient } from "@supabase/ssr"
// import { Database } from "@/supabase/types"
// let _supabase: ReturnType<typeof createBrowserClient<Database>> | null = null
// export async function createClient() {
// if (_supabase) return _supabase
// const url = await getRuntimeSupabaseUrl()
// const key = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY! // 你要求写死,保留
// _supabase = createBrowserClient(url, key)
// return _supabase
// }
// // Export the supabase client directly for easier usage
// export const supabase = async () => {
// // Simply return the client created by createClient
// return await createClient()
// }
// async function getRuntimeSupabaseUrl(retry = 30, interval = 50): Promise<string> {
// for (let i = 0; i < retry; i++) {
// const url = window?.RUNTIME_ENV?.SUPABASE_URL
// if (url) return url
// await new Promise((r) => setTimeout(r, interval))
// }
// throw new Error("RUNTIME_ENV.SUPABASE_URL not ready")
// }
import { createBrowserClient } from "@supabase/ssr";
import { Database } from "@/supabase/types";
// 缓存 Supabase 客户端实例
let _supabase: SupabaseClient<Database> | null = null;
// 创建 Supabase 客户端的工厂方法
export function createClient() {
// 如果客户端已经初始化,则直接返回
if (_supabase) return _supabase;
// 获取动态的 SUPABASE_URL同步获取
const url = window?.RUNTIME_ENV?.SUPABASE_URL ?? "http://localhost:8000"; // 默认回退值
const key = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!; // 使用环境变量中的匿名密钥
// 初始化 Supabase 客户端并缓存
_supabase = createBrowserClient(url, key);
return _supabase;
}
// 返回已初始化的同步 Supabase 客户端实例
export const supabase = createClient;