import { useState } from 'react';

export default function usePopupManager() {
    const [showCustomerService, setShowCustomerService] = useState(false);
    const [showCancelPopup, setShowCancelPopup] = useState(false);
    const [cancelPopupWaitMinutes, setCancelPopupWaitMinutes] = useState<number | null>(null);
    const [showAnnouncementsPopup, setShowAnnouncementsPopup] = useState(false);
    const [showOverRoutePopup, setShowOverRoutePopup] = useState(false);
    const [showPassengerNotice, setShowPassengerNotice] = useState(false);
    const [cancelType, setCancelType] = useState(1);
    const [showEvaluatePopup, setShowEvaluatePopup] = useState(false);
    const [showTipPopup, setShowTipPopup] = useState(false);
    const [tipType, setTipType] = useState('');
    const [showPrivacyPopup, setShowPrivacyPopup] = useState(false);

    const setPopupVisible = (setter: (value: boolean) => void, visible: boolean) => () => setter(visible);

    const handleCloseCustomerService = setPopupVisible(setShowCustomerService, false);
    const handleCloseTipPopup = () => {
        setShowTipPopup(false);
        setTimeout(() => {
            setTipType('');
        }, 600);
    };

    const handleCloseCancelPopup = () => {
        setShowCancelPopup(false);
        setCancelPopupWaitMinutes(null);
    };
    const handleCloseAnnouncementsPopup = setPopupVisible(setShowAnnouncementsPopup, false);
    const handleOpenAnnouncementsPopup = setPopupVisible(setShowAnnouncementsPopup, true);
    const handleOpenOverRoutePopup = setPopupVisible(setShowOverRoutePopup, true);
    const handleCloseOverRoutePopup = setPopupVisible(setShowOverRoutePopup, false);

    const handleClosePassengerNotice = () => setShowPassengerNotice(false);
    const handleOpenPassengerNotice = () => setShowPassengerNotice(true);

    const handleOpenEvaluatePopup = setPopupVisible(setShowEvaluatePopup, true);
    const handleCloseEvaluatePopup = setPopupVisible(setShowEvaluatePopup, false);
    const handleOpenPrivacyPopup = setPopupVisible(setShowPrivacyPopup, true);
    const handleClosePrivacyPopup = setPopupVisible(setShowPrivacyPopup, false);

    return {
        showCustomerService,
        setShowCustomerService,
        handleCloseCustomerService,
        showCancelPopup,
        setShowCancelPopup,
        cancelPopupWaitMinutes,
        setCancelPopupWaitMinutes,
        handleCloseCancelPopup,
        cancelType,
        setCancelType,
        showAnnouncementsPopup,
        setShowAnnouncementsPopup,
        handleCloseAnnouncementsPopup,
        handleOpenAnnouncementsPopup,
        showOverRoutePopup,
        setShowOverRoutePopup,
        handleCloseOverRoutePopup,
        handleOpenOverRoutePopup,
        showPassengerNotice,
        setShowPassengerNotice,
        handleClosePassengerNotice,
        handleOpenPassengerNotice,
        showEvaluatePopup,
        setShowEvaluatePopup,
        handleCloseEvaluatePopup,
        handleOpenEvaluatePopup,
        showTipPopup,
        setShowTipPopup,
        handleCloseTipPopup,
        tipType,
        setTipType,
        showPrivacyPopup,
        setShowPrivacyPopup,
        handleOpenPrivacyPopup,
        handleClosePrivacyPopup
    };
}
