'use client'; import { useState } from 'react'; import Card from '@/components/ui/Card'; import Button from '@/components/ui/Button'; import Input from '@/components/ui/Input'; import { useTeamJoinRequests, useUpdateTeam, useApproveJoinRequest, useRejectJoinRequest } from '@/hooks/team'; import type { TeamJoinRequestViewModel } from '@/lib/view-models/TeamJoinRequestViewModel'; import type { TeamDetailsViewModel } from '@/lib/view-models/TeamDetailsViewModel'; interface TeamAdminProps { team: Pick; onUpdate: () => void; } export default function TeamAdmin({ team, onUpdate }: TeamAdminProps) { const [editMode, setEditMode] = useState(false); const [editedTeam, setEditedTeam] = useState({ name: team.name, tag: team.tag, description: team.description, }); // Use hooks for data fetching const { data: joinRequests = [], isLoading: loading } = useTeamJoinRequests( team.id, team.ownerId, true ); // Use hooks for mutations 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 = (requestId: string) => { // Note: The current API doesn't support approving specific requests // This would need the requestId to be passed to the service approveJoinRequestMutation.mutate(); }; const handleReject = (requestId: string) => { // Note: The current API doesn't support rejecting specific requests // This would need the requestId to be passed to the service 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} />

Max 4 characters