diff --git a/apps/hackathon/src/app/teams/[teamId]/members/page.tsx b/apps/hackathon/src/app/teams/[teamId]/members/page.tsx index a0276ea..4987873 100644 --- a/apps/hackathon/src/app/teams/[teamId]/members/page.tsx +++ b/apps/hackathon/src/app/teams/[teamId]/members/page.tsx @@ -15,6 +15,7 @@ import { } from '@imphnen-frontend-service/service'; import { useForm } from 'react-hook-form'; import { zodResolver } from '@hookform/resolvers/zod'; +import { toast } from 'sonner'; const ManageMembersPage: FC = (): ReactElement => { const { teamId } = useParams<{ teamId: string }>(); @@ -75,16 +76,20 @@ const ManageMembersPage: FC = (): ReactElement => { const handleApproveRequest = async (requestId: string) => { try { await respondToRequest({ requestId, action: 'approve' }); + toast.success('Member added successfully!'); } catch (error) { console.error('Failed to approve request:', error); + toast.error((error as Error).message || 'Failed to approve request'); } }; const handleRejectRequest = async (requestId: string) => { try { await respondToRequest({ requestId, action: 'reject' }); + toast.success('Request rejected'); } catch (error) { console.error('Failed to reject request:', error); + toast.error((error as Error).message || 'Failed to reject request'); } }; diff --git a/libs/service/src/hooks/teams/index.ts b/libs/service/src/hooks/teams/index.ts index cf3be09..32b014e 100644 --- a/libs/service/src/hooks/teams/index.ts +++ b/libs/service/src/hooks/teams/index.ts @@ -442,7 +442,17 @@ export const useRespondToJoinRequest = (teamId: string) => { .update({ status: 'pending' }) .eq('id', requestId); - throw new Error('Failed to add member to team: ' + memberError.message); + // Parse Supabase error for user-friendly message + let errorMsg = memberError.message; + if (errorMsg.includes('Team already has 5 members') || errorMsg.includes('Team cannot have more than 5 members')) { + errorMsg = 'Team is full! Maximum 5 members allowed.'; + } else if (errorMsg.includes('already in a team') || errorMsg.includes('User is already in a team')) { + errorMsg = 'This user is already in another team.'; + } else if (errorMsg.includes('Bulk insert')) { + errorMsg = 'Invalid operation detected.'; + } + + throw new Error(errorMsg); } return { success: true, action: 'accepted' };