import { createFileRoute, redirect } from '@tanstack/react-router'; import { isDev } from '@/utils/env'; import { MonitorStatusPageServiceItem, MonitorStatusPageServiceList, } from '@/components/monitor/StatusPage/ServiceList'; import { useState } from 'react'; import { EditableText } from '@/components/EditableText'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { WebhookPlayground } from '@/components/WebhookPlayground'; import React from 'react'; import { defaultErrorHandler, defaultSuccessHandler, trpc } from '@/api/trpc'; import { Button } from '@/components/ui/button'; import { useEvent } from '@/hooks/useEvent'; import { useCurrentWorkspaceId } from '@/store/user'; import { Separator } from '@/components/ui/separator'; export const Route = createFileRoute('/playground')({ beforeLoad: () => { if (!isDev) { throw redirect({ to: '/', }); } }, component: PageComponent, }); function PageComponent() { const [list, setList] = useState([ { title: 'Group 1', key: 'group1', children: [ { key: 'item1', id: 'fooo', type: 'monitor', }, ], }, { title: 'Group 2', key: 'group2', children: [ { key: 'item2', id: 'barr', type: 'monitor', }, ], }, ]); return (
Billing Webhook Misc
console.log('save')} />
); } export const BillingPlayground: React.FC = React.memo(() => { const checkoutMutation = trpc.billing.checkout.useMutation({ onSuccess: defaultSuccessHandler, onError: defaultErrorHandler, }); const changePlanMutation = trpc.billing.changePlan.useMutation({ onSuccess: defaultSuccessHandler, onError: defaultErrorHandler, }); const cancelSubscriptionMutation = trpc.billing.cancelSubscription.useMutation({ onSuccess: defaultSuccessHandler, onError: defaultErrorHandler, }); const workspaceId = useCurrentWorkspaceId(); const { data, refetch, isInitialLoading, isLoading } = trpc.billing.currentSubscription.useQuery({ workspaceId, }); const handleCheckoutSubscribe = useEvent(async (tier: 'pro' | 'team') => { const { url } = await checkoutMutation.mutateAsync({ workspaceId, tier, redirectUrl: location.href, }); location.href = url; }); const handleChangeSubscribe = useEvent( async (tier: 'free' | 'pro' | 'team') => { await changePlanMutation.mutateAsync({ workspaceId, tier, }); refetch(); } ); const plan = data ? (
) : (
); return (
Current: {JSON.stringify(data)}
{isInitialLoading === false && plan}
); }); BillingPlayground.displayName = 'BillingPlayground';