import { Alert, Button, Divider, Link, Textarea } from "@mui/joy"; import { useState } from "react"; import toast from "react-hot-toast"; import { showCommonDialog } from "@/components/Alert"; import Icon from "@/components/Icon"; import SubscriptionFAQ from "@/components/SubscriptionFAQ"; import { subscriptionServiceClient } from "@/grpcweb"; import { useUserStore, useWorkspaceStore } from "@/stores"; import { stringifyPlanType } from "@/stores/subscription"; import { PlanType } from "@/types/proto/api/v1/subscription_service"; import { Role } from "@/types/proto/api/v1/user_service"; const SubscriptionSetting: React.FC = () => { const workspaceStore = useWorkspaceStore(); const currentUser = useUserStore().getCurrentUser(); const [licenseKey, setLicenseKey] = useState(""); const isAdmin = currentUser.role === Role.ADMIN; const subscription = workspaceStore.getSubscription(); const handleDeleteLicenseKey = async () => { if (!isAdmin) { toast.error("Only admin can upload license key"); return; } showCommonDialog({ title: "Reset licence key", content: `Are you sure to reset the license key? You cannot undo this action.`, style: "warning", onConfirm: async () => { try { await subscriptionServiceClient.deleteSubscription({}); toast.success("License key has been reset"); } catch (error: any) { toast.error(error.details); } await workspaceStore.fetchWorkspaceProfile(); }, }); }; const handleUpdateLicenseKey = async () => { if (!isAdmin) { toast.error("Only admin can upload license key"); return; } try { const subscription = await subscriptionServiceClient.updateSubscription({ licenseKey, }); toast.success(`Welcome to Slash ${stringifyPlanType(subscription.plan)}🎉`); } catch (error: any) { toast.error(error.details); } setLicenseKey(""); await workspaceStore.fetchWorkspaceProfile(); }; return (

Subscription

Current plan: {stringifyPlanType(subscription.plan)}