import React, { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useParams, useNavigate } from 'react-router-dom'; import { ArrowLeft, Save } from 'lucide-react'; import { useAuth } from '../lib/auth'; import { useTenant } from '../lib/tenant'; import { api } from '../lib/api'; import { logError } from '../lib/logger'; export default function TrackFormPage() { const { t } = useTranslation(); const { token } = useAuth(); const { selectedOrgId } = useTenant(); const { id } = useParams<{ id: string }>(); const navigate = useNavigate(); const isNew = id === 'new'; const [form, setForm] = useState({ title: '', description: '', duration: 7, language: 'FR', isPremium: false, priceAmount: 0 }); const [saving, setSaving] = useState(false); useEffect(() => { if (!isNew && token && selectedOrgId) { api.get(`/v1/admin/tracks/${id}`, token, selectedOrgId) .then(t => setForm({ title: t.title, description: t.description || '', duration: t.duration, language: t.language, isPremium: t.isPremium, priceAmount: t.priceAmount || 0 })); } }, [id, token, selectedOrgId, isNew]); const inp = "w-full border border-slate-200 rounded-xl px-4 py-2.5 text-sm outline-none focus:ring-2 focus:ring-slate-300"; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!token || !selectedOrgId) return; setSaving(true); const payload = { ...form, priceAmount: form.priceAmount || undefined }; try { if (isNew) { await api.post('/v1/admin/tracks', payload, token, selectedOrgId); } else { await api.put(`/v1/admin/tracks/${id}`, payload, token, selectedOrgId); } navigate('/content'); } catch (err) { logError(err); } finally { setSaving(false); } }; return (

{isNew ? t('tracks.new') : t('common.edit')}

setForm(f => ({ ...f, title: e.target.value }))} />