supabase client tool
This commit is contained in:
@@ -1,11 +1,12 @@
|
||||
"use client";
|
||||
|
||||
import { useEffect, useState } from 'react';
|
||||
import { createClientComponentClient } from '@supabase/auth-helpers-nextjs';
|
||||
import type { Database } from '@/types/supabase';
|
||||
import { Select } from './Select';
|
||||
import { getSupabaseClient } from '../../utils/supabase';
|
||||
import { AuthChangeEvent, Session } from '@supabase/supabase-js';
|
||||
|
||||
type Team = Database['public']['Tables']['teams']['Row'];
|
||||
type Team = Database['limq']['Tables']['teams']['Row'];
|
||||
|
||||
interface TeamSelectorProps {
|
||||
value?: string;
|
||||
@@ -17,8 +18,6 @@ export function TeamSelector({ value, onChange, className }: TeamSelectorProps)
|
||||
const [teams, setTeams] = useState<Team[]>([]);
|
||||
const [loading, setLoading] = useState(true);
|
||||
const [error, setError] = useState<string | null>(null);
|
||||
|
||||
const supabase = createClientComponentClient<Database>();
|
||||
|
||||
useEffect(() => {
|
||||
let isMounted = true;
|
||||
@@ -31,6 +30,8 @@ export function TeamSelector({ value, onChange, className }: TeamSelectorProps)
|
||||
setError(null);
|
||||
|
||||
try {
|
||||
const supabase = getSupabaseClient();
|
||||
|
||||
// 获取用户的团队成员关系
|
||||
console.log('Fetching team memberships for user:', userId);
|
||||
const { data: memberships, error: membershipError } = await supabase
|
||||
@@ -84,8 +85,10 @@ export function TeamSelector({ value, onChange, className }: TeamSelectorProps)
|
||||
}
|
||||
};
|
||||
|
||||
const supabase = getSupabaseClient();
|
||||
|
||||
// 设置认证状态监听器
|
||||
const { data: { subscription } } = supabase.auth.onAuthStateChange((event, session) => {
|
||||
const { data: { subscription } } = supabase.auth.onAuthStateChange((event: AuthChangeEvent, session: Session | null) => {
|
||||
console.log('Auth state changed:', event, session?.user);
|
||||
if (event === 'SIGNED_IN' && session?.user?.id) {
|
||||
fetchTeams(session.user.id);
|
||||
@@ -96,7 +99,7 @@ export function TeamSelector({ value, onChange, className }: TeamSelectorProps)
|
||||
});
|
||||
|
||||
// 初始检查session
|
||||
supabase.auth.getSession().then(({ data: { session } }) => {
|
||||
supabase.auth.getSession().then(({ data: { session } }: { data: { session: Session | null } }) => {
|
||||
console.log('Initial session check:', session?.user);
|
||||
if (session?.user?.id) {
|
||||
fetchTeams(session.user.id);
|
||||
@@ -107,7 +110,7 @@ export function TeamSelector({ value, onChange, className }: TeamSelectorProps)
|
||||
isMounted = false;
|
||||
subscription.unsubscribe();
|
||||
};
|
||||
}, [supabase]);
|
||||
}, []);
|
||||
|
||||
if (loading) {
|
||||
return <div className="animate-pulse h-10 bg-gray-200 rounded-md dark:bg-gray-700" />;
|
||||
|
||||
Reference in New Issue
Block a user