import { Alert, Button, Divider, Link, Textarea } from "@mui/joy"; import { useState } from "react"; import toast from "react-hot-toast"; 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; } const confirmed = window.confirm("Are you sure you want to reset the license key?"); if (confirmed) { 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)}