fix redirect to checkout when the org has not a subscription

This commit is contained in:
2026-01-07 14:30:29 -03:00
parent d222872000
commit ded57b43f0
7 changed files with 173 additions and 113 deletions

View File

@@ -67,7 +67,6 @@ export default function Route({
loaderData: { enrollments }
}: Route.ComponentProps) {
const { orgid } = useParams()
const { subscription } = useWorksapce()
const [searchParams, setSearchParams] = useSearchParams()
const [selectedRows, setSelectedRows] = useState<Enrollment[]>([])
const status = searchParams.get('status')
@@ -205,7 +204,7 @@ export default function Route({
<DataTableViewOptions className="flex-1" />
<Button className="flex-1" asChild>
<Link to={subscription ? 'add' : 'buy'}>
<Link to="add">
<PlusIcon /> Adicionar
</Link>
</Button>

View File

@@ -72,6 +72,7 @@ import { ScheduledForInput } from './scheduled-for'
import { CoursePicker } from './course-picker'
import { UserPicker } from './user-picker'
import { cn } from '@repo/ui/lib/utils'
import { workspaceContext } from '@/middleware/workspace'
const emptyRow = {
user: undefined,
@@ -84,6 +85,12 @@ export function meta({}: Route.MetaArgs) {
}
export async function loader({ params, context, request }: Route.LoaderArgs) {
const { subscription } = context.get(workspaceContext)
// If there's no subscription for the org, redirect to checkout
if (!subscription) {
throw redirect('../enrollments/buy')
}
const url = new URL(request.url)
const submissionId = url.searchParams.get('submission')
const cloudflare = context.get(cloudflareContext)

View File

@@ -27,32 +27,17 @@ export const middleware: Route.MiddlewareFunction[] = [
workspaceMiddleware
]
export async function loader({ params, context, request }: Route.ActionArgs) {
export async function loader({ context, request }: Route.ActionArgs) {
const user = context.get(userContext)!
const { activeWorkspace, workspaces } = context.get(workspaceContext)
const workspace = context.get(workspaceContext)
const rawCookie = request.headers.get('cookie') || ''
const parsedCookies = cookie.parse(rawCookie)
const { sidebar_state = 'true' } = parsedCookies
const subscription = req({
url: `/orgs/${activeWorkspace.id}/subscription`,
request,
context
}).then((r) => r.json())
const address = req({
url: `/orgs/${activeWorkspace.id}/address`,
request,
context
}).then((r) => r.json())
return {
user,
activeWorkspace,
workspaces,
sidebar_state,
subscription,
address
...workspace
}
}
@@ -64,9 +49,14 @@ export function shouldRevalidate({
}
export default function Route({ loaderData }: Route.ComponentProps) {
const { user, activeWorkspace, workspaces, sidebar_state } = loaderData
const subscription = use(loaderData.subscription)
const address = use(loaderData.address)
const {
user,
activeWorkspace,
workspaces,
subscription,
address,
sidebar_state
} = loaderData
useEffect(() => {
if (typeof window !== 'undefined' && window.rybbit) {