♻️ (billing) Refactor billing server code to trpc

This commit is contained in:
Baptiste Arnaud
2023-02-17 16:19:39 +01:00
parent 962438768e
commit b73282d810
38 changed files with 1565 additions and 367 deletions

View File

@@ -1,19 +1,26 @@
import { Seo } from '@/components/Seo'
import { useUser } from '@/features/account'
import { upgradePlanQuery } from '@/features/billing'
import { TypebotDndProvider, FolderContent } from '@/features/folders'
import { useWorkspace } from '@/features/workspace'
import { trpc } from '@/lib/trpc'
import { Stack, VStack, Spinner, Text } from '@chakra-ui/react'
import { Plan } from 'db'
import { useRouter } from 'next/router'
import { useState, useEffect } from 'react'
import { guessIfUserIsEuropean } from 'utils/pricing'
import { DashboardHeader } from './DashboardHeader'
export const DashboardPage = () => {
const [isLoading, setIsLoading] = useState(false)
const { query } = useRouter()
const { query, push } = useRouter()
const { user } = useUser()
const { workspace } = useWorkspace()
const { mutate: createCheckoutSession } =
trpc.billing.createCheckoutSession.useMutation({
onSuccess: (data) => {
push(data.checkoutUrl)
},
})
useEffect(() => {
const { subscribePlan, chats, storage } = query as {
@@ -23,15 +30,17 @@ export const DashboardPage = () => {
}
if (workspace && subscribePlan && user && workspace.plan === 'FREE') {
setIsLoading(true)
upgradePlanQuery({
user,
plan: subscribePlan,
createCheckoutSession({
plan: subscribePlan as 'PRO' | 'STARTER',
workspaceId: workspace.id,
additionalChats: chats ? parseInt(chats) : 0,
additionalStorage: storage ? parseInt(storage) : 0,
returnUrl: window.location.href,
currency: guessIfUserIsEuropean() ? 'eur' : 'usd',
prefilledEmail: user.email ?? undefined,
})
}
}, [query, user, workspace])
}, [createCheckoutSession, query, user, workspace])
return (
<Stack minH="100vh">