import React, { useCallback, useState } from "react"; import { AlertButton } from "react-native"; import { Button } from "../Button"; import { Modal } from "../Modal"; import { Stack } from "../Stack"; import { Text } from "../Text"; import styles from "./styles"; type AlertOptions = { cancelable?: boolean; onDismiss?: () => void; }; let alertPush = null; export const AlertProvider = () => { const [alerts, setAlerts] = useState([]); const dismiss = useCallback( (alertId) => { setAlerts((prevState) => { const alertIndex = prevState.findIndex((alert) => alert.id === alertId); const alert = prevState[alertIndex]; if (!alert) return prevState; return [ ...prevState.slice(0, alertIndex), { ...alert, dismissed: true }, ...prevState.slice(alertIndex + 1), ]; }); setTimeout(() => { setAlerts((prevState) => { const alertIndex = prevState.findIndex( (alert) => alert.id === alertId ); if (alertIndex < 0) return prevState; return [ ...prevState.slice(0, alertIndex), ...prevState.slice(alertIndex + 1), ]; }); }, 500); }, [alerts] ); alertPush = (alert) => { setAlerts((prevState) => [...prevState, alert]); }; return ( <> {alerts.map((alert) => ( dismiss(alert.id)} > {alert.title} {alert.message && {alert.message}} {(alert.buttons || []).map((button) => (