import React, {FC} from "react"; import SectionTitle from "@/components/ui/SectionTitle"; import {syncUserDishRecurrences} from "@/utils/api/usersApi"; import Spinner from "@/components/Spinner"; import {UserDishType} from "@/types/ScheduledUserDishType"; import {RecurrenceType} from "@/types/ScheduleType"; import Button from "@/components/ui/Button"; import Input from "@/components/ui/Input"; interface Props { userDish: UserDishType onSubmit: () => void } const EditDishUserCardEditForm: FC = ({ userDish, onSubmit}) => { const weeklyRecurrence = userDish.recurrences.find((recurrence) => recurrence.type === 'App\\Models\\WeeklyRecurrence') const minimumRecurrence = userDish.recurrences.find((recurrence) => recurrence.type === 'App\\Models\\MinimumRecurrence') const wv = weeklyRecurrence ? weeklyRecurrence.value : undefined const mv = minimumRecurrence ? minimumRecurrence.value : undefined const [isWeeklyOn, setIsWeeklyOn] = React.useState(weeklyRecurrence !== undefined); const [isMinimumOn, setIsMinimumOn] = React.useState(minimumRecurrence !== undefined); const [weekday, setWeekday] = React.useState(wv ?? 0); const [minimumValue, setMinimumValue] = React.useState(mv ?? 7); const [loading, setLoading] = React.useState(false); const handleSubmit = () => { const recurrences = [] if (isWeeklyOn) { recurrences.push({ type: 'App\\Models\\WeeklyRecurrence', value: weekday, }); } if (isMinimumOn) { recurrences.push({ type: 'App\\Models\\MinimumRecurrence', value: minimumValue, }); } setLoading(true) syncUserDishRecurrences(userDish.dish.id, userDish.user.id, recurrences as RecurrenceType[]) .then((data) => console.log('request data', data)) .finally(() => { setLoading(false) onSubmit() }) } if (loading) { return ; } return (
Recurrences
setIsWeeklyOn(!isWeeklyOn)} className="w-4 h-4 border border-gray-300 rounded-sm bg-gray-50 focus:ring-3 focus:ring-blue-300 dark:bg-gray-700 dark:border-gray-600 dark:focus:ring-blue-600 dark:ring-offset-gray-800 dark:focus:ring-offset-gray-800" />
{ isWeeklyOn && (
) }
setIsMinimumOn(!isMinimumOn)} className="w-4 h-4 border border-gray-300 rounded-sm bg-gray-500 focus:ring-3 focus:ring-blue-300 dark:bg-gray-700 dark:border-gray-600 dark:focus:ring-blue-600 dark:ring-offset-gray-800 dark:focus:ring-offset-gray-800" />
{ isMinimumOn && (
setMinimumValue(parseInt(e.currentTarget.value))} min="0" max="365" className="w-12 px-2" fullWidth={false} />
) }
); } export default EditDishUserCardEditForm;