'use client'; import { JoinRequestItem } from '@/components/leagues/JoinRequestItem'; import { JoinRequestList } from '@/components/leagues/JoinRequestList'; import { EmptyState } from '@/ui/EmptyState'; import { LoadingWrapper } from '@/ui/LoadingWrapper'; import { useApproveJoinRequest } from "@/hooks/team/useApproveJoinRequest"; import { useRejectJoinRequest } from "@/hooks/team/useRejectJoinRequest"; import { useTeamJoinRequests } from "@/hooks/team/useTeamJoinRequests"; import { useUpdateTeam } from "@/hooks/team/useUpdateTeam"; import type { TeamJoinRequestViewModel } from '@/lib/view-models/TeamJoinRequestViewModel'; import { Button } from '@/ui/Button'; import { Panel } from '@/ui/Panel'; import { DangerZone } from '@/ui/DangerZone'; import { Input } from '@/ui/Input'; import { Text } from '@/ui/Text'; import { TextArea } from '@/ui/TextArea'; import { Box } from '@/ui/Box'; import { Stack } from '@/ui/Stack'; import React, { useState } from 'react'; interface TeamAdminProps { team: { id: string; name: string; tag: string; description?: string; ownerId: string; }; onUpdate: () => void; } export function TeamAdmin({ team, onUpdate }: TeamAdminProps) { const [editMode, setEditMode] = useState(false); const [editedTeam, setEditedTeam] = useState({ name: team.name, tag: team.tag, description: team.description || '', }); const { data: joinRequests = [], isLoading: loading } = useTeamJoinRequests( team.id, team.ownerId, true ); const updateTeamMutation = useUpdateTeam({ onSuccess: () => { setEditMode(false); onUpdate(); }, onError: (error) => { alert(error instanceof Error ? error.message : 'Failed to update team'); }, }); const approveJoinRequestMutation = useApproveJoinRequest({ onSuccess: () => { onUpdate(); }, onError: (error) => { alert(error instanceof Error ? error.message : 'Failed to approve request'); }, }); const rejectJoinRequestMutation = useRejectJoinRequest({ onSuccess: () => { onUpdate(); }, onError: (error) => { alert(error instanceof Error ? error.message : 'Failed to reject request'); }, }); const handleApprove = () => { approveJoinRequestMutation.mutate(); }; const handleReject = () => { rejectJoinRequestMutation.mutate(); }; const handleSaveChanges = () => { updateTeamMutation.mutate({ teamId: team.id, input: { name: editedTeam.name, tag: editedTeam.tag, description: editedTeam.description, }, }); }; return ( Team Settings {!editMode && ( )} {editMode ? ( setEditedTeam({ ...editedTeam, name: e.target.value })} /> setEditedTeam({ ...editedTeam, tag: e.target.value })} maxLength={4} hint="Max 4 characters" />