import { dialogSelector, expiredSelector, isSubscribedSelector, refreshSubscription, refreshSubscriptionTask, setDialog, } from "../store/subscription.ts"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "../components/ui/dialog.tsx"; import { useDispatch, useSelector } from "react-redux"; import { useTranslation } from "react-i18next"; import { useToast } from "../components/ui/use-toast.ts"; import React, { useEffect } from "react"; import "../assets/subscription.less"; import { Calendar, Compass, Globe, Image, ImagePlus, LifeBuoy, MessageSquare, MessagesSquare, Plus, ServerCrash, Webhook, } from "lucide-react"; import { Button } from "../components/ui/button.tsx"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "../components/ui/select.tsx"; import { Badge } from "../components/ui/badge.tsx"; import { buySubscription } from "../conversation/addition.ts"; function calc_prize(month: number): number { const base = 32 * month; if (month >= 36) { return base * 0.7; } else if (month >= 12) { return base * 0.8; } else if (month >= 6) { return base * 0.9; } return base; } type UpgradeProps = { children: React.ReactNode; }; async function callBuyAction( t: any, toast: any, month: number, ): Promise { const res = await buySubscription(month); if (res.status) { toast({ title: t("sub.success"), description: t("sub.success-prompt", { month, }), }); } else { toast({ title: t("sub.failed"), description: t("sub.failed-prompt"), }); setTimeout(() => { window.open("https://deeptrain.net/home/wallet"); }, 2000); } return res.status; } function Upgrade({ children }: UpgradeProps) { const { t } = useTranslation(); const [open, setOpen] = React.useState(false); const [month, setMonth] = React.useState(1); const dispatch = useDispatch(); const { toast } = useToast(); return ( {children} {t("sub.select-time")}

{t("sub.price", { price: calc_prize(month).toFixed(2) })}

); } function Subscription() { const { t } = useTranslation(); const open = useSelector(dialogSelector); const subscription = useSelector(isSubscribedSelector); const expired = useSelector(expiredSelector); const dispatch = useDispatch(); useEffect(() => { refreshSubscriptionTask(dispatch); }, []); return ( dispatch(setDialog(state))} > {t("sub.dialog-title")}
{subscription && (
{t("sub.expired", { expired })}
)}
{t("sub.free")}
{t("sub.free-price")}
{t("sub.free-gpt3")}
{t("sub.free-dalle")}
{t("sub.free-web")}
{t("sub.free-conversation")}
{t("sub.free-api")}
{t("sub.pro")}
{t("sub.pro-price")}
{t("sub.pro-gpt4")}
{t("sub.pro-dalle")}
{t("sub.pro-service")}
{t("sub.pro-thread")}
); } export default Subscription;