'use client'; import { useState, useEffect } from 'react'; import Dropdown from '../../components/Dropdown'; // Adjust the import path as needed import { Team } from '@/types'; export default function AddStreamClient() { const [formData, setFormData] = useState({ name: '', obs_source_name: '', url: '', team_id: null, // Include team_id in the form data }); const [teams, setTeams] = useState([]); // State to store teams const [message, setMessage] = useState(''); // Fetch teams on component mount useEffect(() => { async function fetchTeams() { try { const response = await fetch('/api/teams'); const data = await response.json(); // Map the API data to the format required by the Dropdown setTeams( data.map((team:Team) => ({ id: team.team_id, name: team.team_name, })) ); } catch (error) { console.error('Failed to fetch teams:', error); } } fetchTeams(); }, []); const handleInputChange = (e: React.ChangeEvent) => { const { name, value } = e.target; setFormData((prev) => ({ ...prev, [name]: value })); }; const handleTeamSelect = (teamId:number) => { // @ts-expect-error - team_id can be null or number in formData, but TypeScript expects only number setFormData((prev) => ({ ...prev, team_id: teamId })); }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setMessage(''); try { const response = await fetch('/api/addStream', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(formData), }); const data = await response.json(); if (response.ok) { setMessage(data.message); setFormData({ name: '', obs_source_name: '', url: '', team_id: null }); // Reset form } else { setMessage(data.error || 'Something went wrong.'); } } catch (error) { console.error('Error adding stream:', error); setMessage('Failed to add stream.'); } }; return (

Add New Stream

{message && (

{message}

)}
); }