import { useState } from "react"; import { View, Text } from "react-native"; import { Dialog, IconButton } from "react-native-paper"; import { DialogContainer } from "@/components/ui/DialogContainer"; import { Todo } from "@/store/models/Todo.model"; import { Button } from "@/components/ui/Button"; import { LoadingSpinner } from "@/components/ui/LoadingSpinner"; import { AppSnackbar } from "@/components/ui/AppSnackbar"; interface DeleteTodoModalProps { visible: boolean; todo: Todo | null; onDismiss: () => void; onDelete: (todo: Todo) => void; isLoading?: boolean; } export const DeleteTodoModal = ({ visible, todo, onDismiss, onDelete, isLoading = false, }: DeleteTodoModalProps) => { const [error, setError] = useState(null); const [snackbarVisible, setSnackbarVisible] = useState(false); const [snackbarMessage, setSnackbarMessage] = useState(""); const showSnackbar = (message: string) => { setSnackbarMessage(message); setSnackbarVisible(true); }; if (!todo) return null; const handleDelete = () => { try { setError(null); onDelete(todo); } catch { showSnackbar("Failed to delete todo. Please try again."); } }; return ( <> Delete Todo Are you sure you want to delete {todo.title}? {error && {error}} {isLoading && ( )} setSnackbarVisible(false)} action={{ label: "Close", onPress: () => setSnackbarVisible(false) }} > {snackbarMessage} ); };