| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- import { useState, useCallback, useEffect } from 'react';
- import { Member } from '../types/member';
- import { fetchMembers as fetchMembersApi, addMember as addMemberApi, updateMember as updateMemberApi, deleteMember as deleteMemberApi } from '../services/memberService';
- export const useMemberManagement = () => {
- const [members, setMembers] = useState<Member[]>([]);
- const [loading, setLoading] = useState(false);
- const fetchMembers = useCallback(async () => {
- setLoading(true);
- try {
- const fetchedMembers = await fetchMembersApi();
- setMembers(fetchedMembers);
- console.log('Fetched members:', fetchedMembers);
- } catch (error) {
- console.error('Failed to load members:', error);
- } finally {
- setLoading(false);
- }
- }, []);
- useEffect(() => {
- fetchMembers();
- }, [fetchMembers]);
- const addMember = async (member: Omit<Member, 'id'>) => {
- try {
- await addMemberApi(member);
- await fetchMembers();
- } catch (error) {
- console.error('Failed to add member:', error);
- throw error;
- }
- };
- const editMember = async (updatedMember: Member) => {
- try {
- await updateMemberApi(updatedMember);
- await fetchMembers();
- } catch (error) {
- console.error('Failed to update member:', error);
- throw error;
- }
- };
- const deleteMember = async (memberId: string) => {
- try {
- await deleteMemberApi(memberId);
- await fetchMembers();
- } catch (error) {
- console.error('Failed to delete member:', error);
- throw error;
- }
- };
- return {
- members,
- loading,
- fetchMembers,
- addMember,
- editMember,
- deleteMember,
- };
- };
|