import React, { useState } from 'react'; import { Link, useNavigate } from 'react-router-dom'; import { useMutation, useQuery } from '@tanstack/react-query'; import { apiClient, type FeedRequest, type Language, type FeedProvider } from '../../../lib/api'; const FeedStep: React.FC = () => { const navigate = useNavigate(); const [formData, setFormData] = useState({ name: '', provider: 'vrt', language_id: 0, description: '' }); const [errors, setErrors] = useState>({}); // Get onboarding options (languages) const { data: options, isLoading: optionsLoading } = useQuery({ queryKey: ['onboarding-options'], queryFn: () => apiClient.getOnboardingOptions() }); const createFeedMutation = useMutation({ mutationFn: (data: FeedRequest) => apiClient.createFeedForOnboarding(data), onSuccess: () => { navigate('/onboarding/channel'); }, onError: (error: any) => { if (error.response?.data?.errors) { setErrors(error.response.data.errors); } else { setErrors({ general: [error.response?.data?.message || 'An error occurred'] }); } } }); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); setErrors({}); createFeedMutation.mutate(formData); }; const handleChange = (field: keyof FeedRequest, value: string | number) => { setFormData(prev => ({ ...prev, [field]: value })); // Clear field error when user starts typing if (errors[field]) { setErrors(prev => ({ ...prev, [field]: [] })); } }; if (optionsLoading) { return
Loading...
; } return (

Add Your First Feed

Choose from our supported news providers to monitor for new articles

{/* Progress indicator */}
2
3
4
{errors.general && (

{errors.general[0]}

)}
handleChange('name', e.target.value)} placeholder="My News Feed" className="w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent" required /> {errors.name && (

{errors.name[0]}

)}
{errors.provider && (

{errors.provider[0]}

)}
{errors.language_id && (

{errors.language_id[0]}

)}