"use client"; import { useState } from "react"; import Image from "next/image"; import { useRouter } from "next/navigation"; import { useTranslations } from "next-intl"; import { Offer, RetainingButton } from "@/components/domains/retaining"; import { EyeSvg } from "@/components/domains/retaining/images"; import { Spinner } from "@/components/ui"; import { BlurComponent } from "@/components/widgets"; import { performUserSubscriptionAction } from "@/entities/subscriptions/actions"; import { useLottie } from "@/hooks/lottie/useLottie"; import { useRetainingStore } from "@/providers/retaining-store-provider"; import { useToast } from "@/providers/toast-provider"; import { ROUTES } from "@/shared/constants/client-routes"; import { retainingImages } from "@/shared/constants/images"; import { ELottieKeys } from "@/shared/constants/lottie"; import { ERetainingFunnel } from "@/types"; import styles from "./SecondChancePage.module.scss"; export default function SecondChancePage() { const router = useRouter(); const t = useTranslations("SecondChance"); useLottie({ preloadKey: ELottieKeys.loaderCheckMark2, }); useLottie({ preloadKey: ELottieKeys.confetti, }); const { addToast } = useToast(); const [activeOffer, setActiveOffer] = useState<"pause_30" | "free_chat_30">( "pause_30" ); const [isLoadingButton, setIsLoadingButton] = useState(false); const { funnel, cancellingSubscription } = useRetainingStore(state => state); const handleOfferClick = (offer: "pause_30" | "free_chat_30") => { if (isLoadingButton) return; setActiveOffer(offer); }; const handleGetOfferClick = async () => { if (isLoadingButton) return; setIsLoadingButton(true); const response = await performUserSubscriptionAction({ subscriptionId: cancellingSubscription?.id || "", action: activeOffer, }); if (response?.data?.status === "success") { return router.push(ROUTES.retainingFunnelPlanCancelled()); } setIsLoadingButton(false); addToast({ variant: "error", message: t("error_message"), duration: 5000, }); }; const handleCancelClick = () => { if (isLoadingButton) return; if (funnel === ERetainingFunnel.Red) { router.push(ROUTES.retainingFunnelChangeMind()); } if (funnel === ERetainingFunnel.Green) { return router.push(ROUTES.retainingFunnelCancellationOfSubscription()); } if (funnel === ERetainingFunnel.Purple) { return router.push(ROUTES.retainingFunnelStopFor30Days()); } }; return ( <>

})} description={t("offers.1.description")} oldPrice={t("offers.1.old-price")} newPrice={t("offers.1.new-price")} onClick={() => handleOfferClick("pause_30")} active={activeOffer === "pause_30"} image={} /> handleOfferClick("free_chat_30")} active={activeOffer === "free_chat_30"} image={ vip member } />
{isLoadingButton && (
)} {t("get_offer")}
{t("cancel")} ); }