页面登录优化,team优化
This commit is contained in:
@@ -1,71 +1,58 @@
|
||||
import { useState, useCallback } from 'react';
|
||||
import { message } from 'antd';
|
||||
import { teamMembershipService } from '@/services/supabase/teamMembership';
|
||||
import { supabaseService } from '@/hooks/supabaseService';
|
||||
|
||||
export const useTeamMemberships = (teamId) => {
|
||||
const [memberships, setMemberships] = useState([]);
|
||||
export const useTeamMembership = (teamId) => {
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [memberships, setMemberships] = useState([]);
|
||||
|
||||
const fetchMemberships = useCallback(async () => {
|
||||
const loadMemberships = useCallback(async () => {
|
||||
if (!teamId) return;
|
||||
|
||||
setLoading(true);
|
||||
try {
|
||||
setLoading(true);
|
||||
const data = await teamMembershipService.getMemberships(teamId);
|
||||
setMemberships(data);
|
||||
const result = await supabaseService.get('team_memberships', {
|
||||
select: '*',
|
||||
relations: {
|
||||
user: 'id, email, name'
|
||||
},
|
||||
match: { teamId }
|
||||
});
|
||||
setMemberships(result.data || []);
|
||||
} catch (error) {
|
||||
message.error('Failed to fetch team memberships');
|
||||
console.error(error);
|
||||
console.error('获取成员列表失败:', error);
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
}, [teamId]);
|
||||
|
||||
const createMembership = async (values) => {
|
||||
try {
|
||||
const newMembership = await teamMembershipService.createMembership({
|
||||
...values,
|
||||
teamId,
|
||||
});
|
||||
setMemberships(prev => [...prev, newMembership]);
|
||||
message.success('Member added successfully');
|
||||
return newMembership;
|
||||
} catch (error) {
|
||||
message.error('Failed to add member');
|
||||
throw error;
|
||||
}
|
||||
const addMembership = async (values) => {
|
||||
const result = await supabaseService.insert('team_memberships', {
|
||||
...values,
|
||||
teamId
|
||||
});
|
||||
await loadMemberships();
|
||||
return result[0];
|
||||
};
|
||||
|
||||
const updateMembership = async (id, values) => {
|
||||
try {
|
||||
const updatedMembership = await teamMembershipService.updateMembership(id, values);
|
||||
setMemberships(prev => prev.map(membership =>
|
||||
membership.id === id ? updatedMembership : membership
|
||||
));
|
||||
message.success('Member updated successfully');
|
||||
return updatedMembership;
|
||||
} catch (error) {
|
||||
message.error('Failed to update member');
|
||||
throw error;
|
||||
}
|
||||
const result = await supabaseService.update('team_memberships',
|
||||
{ id },
|
||||
values
|
||||
);
|
||||
await loadMemberships();
|
||||
return result[0];
|
||||
};
|
||||
|
||||
const deleteMembership = async (id) => {
|
||||
try {
|
||||
await teamMembershipService.deleteMembership(id);
|
||||
setMemberships(prev => prev.filter(membership => membership.id !== id));
|
||||
message.success('Member removed successfully');
|
||||
} catch (error) {
|
||||
message.error('Failed to remove member');
|
||||
throw error;
|
||||
}
|
||||
await supabaseService.delete('team_memberships', { id });
|
||||
await loadMemberships();
|
||||
};
|
||||
|
||||
return {
|
||||
memberships,
|
||||
loading,
|
||||
fetchMemberships,
|
||||
createMembership,
|
||||
memberships,
|
||||
loadMemberships,
|
||||
addMembership,
|
||||
updateMembership,
|
||||
deleteMembership,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user