import React, { useState } from 'react'; import { Link, useNavigate } from 'react-router-dom'; import { useMutation } from '@tanstack/react-query'; import { apiClient, type PlatformAccountRequest } from '../../../lib/api'; const PlatformStep: React.FC = () => { const navigate = useNavigate(); const [formData, setFormData] = useState({ instance_url: '', username: '', password: '', platform: 'lemmy' }); const [errors, setErrors] = useState>({}); const createPlatformMutation = useMutation({ mutationFn: (data: PlatformAccountRequest) => apiClient.createPlatformAccount(data), onSuccess: () => { navigate('/onboarding/feed'); }, 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({}); createPlatformMutation.mutate(formData); }; const handleChange = (field: keyof PlatformAccountRequest, value: string) => { setFormData(prev => ({ ...prev, [field]: value })); // Clear field error when user starts typing if (errors[field]) { setErrors(prev => ({ ...prev, [field]: [] })); } }; return (

Connect Your Lemmy Account

Enter your Lemmy instance details and login credentials

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

{errors.general[0]}

)}
handleChange('instance_url', e.target.value)} placeholder="https://lemmy.world" 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.instance_url && (

{errors.instance_url[0]}

)}
handleChange('username', e.target.value)} 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.username && (

{errors.username[0]}

)}
handleChange('password', e.target.value)} 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.password && (

{errors.password[0]}

)}
← Back
); }; export default PlatformStep;