import React, { useState } from 'react'; import { Link, useNavigate } from 'react-router-dom'; import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { apiClient, type ChannelRequest, type Language, type PlatformInstance } from '../../../lib/api'; const ChannelStep: React.FC = () => { const navigate = useNavigate(); const queryClient = useQueryClient(); const [formData, setFormData] = useState({ name: '', platform_instance_id: 0, language_id: 0, description: '' }); const [errors, setErrors] = useState>({}); // Get onboarding options (languages, platform instances) const { data: options, isLoading: optionsLoading } = useQuery({ queryKey: ['onboarding-options'], queryFn: () => apiClient.getOnboardingOptions() }); const createChannelMutation = useMutation({ mutationFn: (data: ChannelRequest) => apiClient.createChannelForOnboarding(data), onSuccess: () => { // Invalidate onboarding status cache queryClient.invalidateQueries({ queryKey: ['onboarding-status'] }); navigate('/onboarding/route'); }, 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({}); createChannelMutation.mutate(formData); }; const handleChange = (field: keyof ChannelRequest, 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 (

Configure Your Channel

Set up a Lemmy community where articles will be posted

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

{errors.general[0]}

)}
handleChange('name', e.target.value)} placeholder="technology" 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 />

Enter the community name (without the @ or instance)

{errors.name && (

{errors.name[0]}

)}
{errors.platform_instance_id && (

{errors.platform_instance_id[0]}

)}
{errors.language_id && (

{errors.language_id[0]}

)}