fix team pro tag
This commit is contained in:
@@ -3,11 +3,12 @@ import type { Database } from "@/types/supabase";
|
||||
|
||||
let supabase: SupabaseClient<Database> | null = null;
|
||||
|
||||
// 简单的存储适配器,使用localStorage
|
||||
// 增强的存储适配器,使用localStorage并添加更多错误处理
|
||||
const storageAdapter = {
|
||||
getItem: async (key: string) => {
|
||||
try {
|
||||
const item = localStorage.getItem(key);
|
||||
console.log(`Storage get for key [${key}]: ${item ? "found" : "not found"}`);
|
||||
return item;
|
||||
} catch (error) {
|
||||
console.error("Storage get error:", error);
|
||||
@@ -18,6 +19,7 @@ const storageAdapter = {
|
||||
setItem: async (key: string, value: string) => {
|
||||
try {
|
||||
localStorage.setItem(key, value);
|
||||
console.log(`Storage set for key [${key}] successful`);
|
||||
} catch (error) {
|
||||
console.error("Storage set error:", error);
|
||||
}
|
||||
@@ -26,18 +28,42 @@ const storageAdapter = {
|
||||
removeItem: async (key: string) => {
|
||||
try {
|
||||
localStorage.removeItem(key);
|
||||
console.log(`Storage remove for key [${key}] successful`);
|
||||
} catch (error) {
|
||||
console.error("Storage remove error:", error);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
// 添加一个函数来检查Supabase连接状态
|
||||
export const checkSupabaseConnection = async (): Promise<boolean> => {
|
||||
try {
|
||||
const client = getSupabaseClient();
|
||||
const { error } = await client.from('_health').select('*').limit(1);
|
||||
|
||||
if (error) {
|
||||
console.error('Supabase connection check failed:', error);
|
||||
return false;
|
||||
}
|
||||
|
||||
console.log('Supabase connection check successful');
|
||||
return true;
|
||||
} catch (error) {
|
||||
console.error('Supabase connection check exception:', error);
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
export const getSupabaseClient = (): SupabaseClient<Database> => {
|
||||
if (!supabase) {
|
||||
if (!process.env.NEXT_PUBLIC_SUPABASE_URL || !process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY) {
|
||||
console.error('Missing Supabase environment variables');
|
||||
throw new Error('Missing Supabase environment variables');
|
||||
}
|
||||
|
||||
console.log('Creating new Supabase client with URL:', process.env.NEXT_PUBLIC_SUPABASE_URL);
|
||||
|
||||
// 使用as断言来避免类型错误
|
||||
supabase = createClient<Database>(
|
||||
process.env.NEXT_PUBLIC_SUPABASE_URL,
|
||||
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY,
|
||||
@@ -47,13 +73,27 @@ export const getSupabaseClient = (): SupabaseClient<Database> => {
|
||||
storage: storageAdapter,
|
||||
persistSession: true,
|
||||
autoRefreshToken: true,
|
||||
detectSessionInUrl: true,
|
||||
},
|
||||
}
|
||||
);
|
||||
) as SupabaseClient<Database>;
|
||||
|
||||
// 立即检查客户端创建后的会话状态
|
||||
void supabase.auth.getSession().then(({ data: { session } }) => {
|
||||
console.log('Initial session check:', session ? 'Session exists' : 'No session');
|
||||
}).catch(err => {
|
||||
console.error('Error checking initial session:', err);
|
||||
});
|
||||
}
|
||||
|
||||
if (!supabase) {
|
||||
throw new Error('Failed to create Supabase client');
|
||||
}
|
||||
|
||||
return supabase;
|
||||
};
|
||||
|
||||
export const clearSupabaseInstance = () => {
|
||||
console.log('Clearing Supabase instance');
|
||||
supabase = null;
|
||||
};
|
||||
Reference in New Issue
Block a user