Files
manage/src/hooks/team/useTeamMemberships.js
2024-12-25 18:34:20 +08:00

59 lines
1.4 KiB
JavaScript

import { useState, useCallback } from 'react';
import { supabaseService } from '@/hooks/supabaseService';
export const useTeamMembership = (teamId) => {
const [loading, setLoading] = useState(false);
const [memberships, setMemberships] = useState([]);
const loadMemberships = useCallback(async () => {
if (!teamId) return;
setLoading(true);
try {
const result = await SupabaseService.select('team_memberships', {
select: '*',
relations: {
user: 'id, email, name'
},
match: { teamId }
});
setMemberships(result.data || []);
} catch (error) {
console.error('获取成员列表失败:', error);
} finally {
setLoading(false);
}
}, [teamId]);
const addMembership = async (values) => {
const result = await supabaseService.insert('team_memberships', {
...values,
teamId
});
await loadMemberships();
return result[0];
};
const updateMembership = async (id, values) => {
const result = await supabaseService.update('team_memberships',
{ id },
values
);
await loadMemberships();
return result[0];
};
const deleteMembership = async (id) => {
await supabaseService.delete('team_memberships', { id });
await loadMemberships();
};
return {
loading,
memberships,
loadMemberships,
addMembership,
updateMembership,
deleteMembership,
};
};