diff --git a/apps/admin.saladeaula.digital/app/routes/_.$orgid.courses._index/route.tsx b/apps/admin.saladeaula.digital/app/routes/_.$orgid.courses._index/route.tsx index 2c47d36..b9d1108 100644 --- a/apps/admin.saladeaula.digital/app/routes/_.$orgid.courses._index/route.tsx +++ b/apps/admin.saladeaula.digital/app/routes/_.$orgid.courses._index/route.tsx @@ -22,6 +22,7 @@ import { } from '@repo/ui/components/ui/empty' import { Kbd } from '@repo/ui/components/ui/kbd' import { cn } from '@repo/ui/lib/utils' +import { cloudflareContext } from '@repo/auth/context' import { createSearch } from '@repo/util/meili' import { request as req } from '@repo/util/request' @@ -49,12 +50,13 @@ export function meta({}: Route.MetaArgs) { } export async function loader({ context, request, params }: Route.LoaderArgs) { + const cloudflare = context.get(cloudflareContext) const courses = createSearch({ index: 'saladeaula_courses', sort: ['created_at:desc'], filter: 'unlisted NOT EXISTS', hitsPerPage: 100, - env: context.cloudflare.env + env: cloudflare.env }) const customPricing = req({ diff --git a/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments.$id._index/route.tsx b/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments.$id._index/route.tsx index 5674605..82261ad 100644 --- a/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments.$id._index/route.tsx +++ b/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments.$id._index/route.tsx @@ -12,9 +12,8 @@ import { import { request as req } from '@repo/util/request' export async function loader({ params, request, context }: Route.LoaderArgs) { - const { id } = params const r = await req({ - url: `/enrollments/${id}`, + url: `/enrollments/${params.id}`, request, context }) diff --git a/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments._index/route.tsx b/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments._index/route.tsx index 8584000..a8a60e5 100644 --- a/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments._index/route.tsx +++ b/apps/admin.saladeaula.digital/app/routes/_.$orgid.enrollments._index/route.tsx @@ -15,6 +15,7 @@ import { Button } from '@repo/ui/components/ui/button' import { ExportMenu } from '@repo/ui/components/export-menu' import { Kbd } from '@repo/ui/components/ui/kbd' import { createSearch } from '@repo/util/meili' +import { cloudflareContext } from '@repo/auth/context' import { headers, sortings, statuses } from '@repo/ui/routes/enrollments/data' import { columns, type Enrollment } from './columns' @@ -24,6 +25,7 @@ export function meta({}: Route.MetaArgs) { } export async function loader({ params, context, request }: Route.LoaderArgs) { + const cloudflare = context.get(cloudflareContext) const { searchParams } = new URL(request.url) const { orgid } = params const query = searchParams.get('q') || '' @@ -52,7 +54,7 @@ export async function loader({ params, context, request }: Route.LoaderArgs) { query, page, hitsPerPage, - env: context.cloudflare.env + env: cloudflare.env }) return { @@ -85,7 +87,7 @@ export default function Route({ loaderData: { data } }: Route.ComponentProps) { - {({ hits, page, hitsPerPage, totalHits }) => ( + {({ hits, page = 1, hitsPerPage, totalHits }) => ( - {({ hits, page, hitsPerPage, totalHits }) => { + {({ hits, page = 1, hitsPerPage, totalHits }) => { return ( }> diff --git a/apps/admin.saladeaula.digital/app/routes/_.$orgid.users.$id/route.tsx b/apps/admin.saladeaula.digital/app/routes/_.$orgid.users.$id/route.tsx index c447298..55265f0 100644 --- a/apps/admin.saladeaula.digital/app/routes/_.$orgid.users.$id/route.tsx +++ b/apps/admin.saladeaula.digital/app/routes/_.$orgid.users.$id/route.tsx @@ -34,9 +34,8 @@ export function meta() { } export async function loader({ params, request, context }: Route.LoaderArgs) { - const { id } = params const r = await req({ - url: `/users/${id}`, + url: `/users/${params.id}`, request, context }) diff --git a/apps/admin.saladeaula.digital/app/routes/_.$orgid.users._index/route.tsx b/apps/admin.saladeaula.digital/app/routes/_.$orgid.users._index/route.tsx index 6514387..60df843 100644 --- a/apps/admin.saladeaula.digital/app/routes/_.$orgid.users._index/route.tsx +++ b/apps/admin.saladeaula.digital/app/routes/_.$orgid.users._index/route.tsx @@ -5,6 +5,7 @@ import { Suspense, useState } from 'react' import { Await, Link, useParams, useSearchParams } from 'react-router' import { MeiliSearchFilterBuilder } from 'meilisearch-helper' +import { cloudflareContext } from '@repo/auth/context' import { DataTable } from '@repo/ui/components/data-table' import { SearchForm } from '@repo/ui/components/search-form' import { Skeleton } from '@repo/ui/components/skeleton' @@ -27,14 +28,18 @@ export function meta({}: Route.MetaArgs) { } export async function loader({ params, context, request }: Route.LoaderArgs) { + const cloudflare = context.get(cloudflareContext) const { searchParams } = new URL(request.url) - const { orgid } = params const query = searchParams.get('q') || '' const sort = searchParams.get('sort') || 'createDate:desc' const page = Number(searchParams.get('p')) + 1 const hitsPerPage = Number(searchParams.get('perPage')) || 25 - let builder = new MeiliSearchFilterBuilder().where('tenant_id', '=', orgid) + let builder = new MeiliSearchFilterBuilder().where( + 'tenant_id', + '=', + params.orgid + ) const users = createSearch({ index: 'betaeducacao-prod-users_d2o3r5gmm4it7j', @@ -43,7 +48,7 @@ export async function loader({ params, context, request }: Route.LoaderArgs) { query, page, hitsPerPage, - env: context.cloudflare.env + env: cloudflare.env }) return { data: users } @@ -66,7 +71,7 @@ export default function Route({ loaderData: { data } }: Route.ComponentProps) { - {({ hits, page, hitsPerPage, totalHits }) => { + {({ hits, page = 1, hitsPerPage, totalHits }) => { return ( >('oidc') if (user?.accessToken && strategy) { diff --git a/apps/admin.saladeaula.digital/app/routes/~.api.$/route.ts b/apps/admin.saladeaula.digital/app/routes/~.api.$/route.ts index 78cf485..bda4455 100644 --- a/apps/admin.saladeaula.digital/app/routes/~.api.$/route.ts +++ b/apps/admin.saladeaula.digital/app/routes/~.api.$/route.ts @@ -1,7 +1,6 @@ import type { Route } from './+types/route' -import type { User } from '@repo/auth/auth' -import { userContext } from '@repo/auth/context' +import { userContext, cloudflareContext } from '@repo/auth/context' import { authMiddleware } from '@repo/auth/middleware/auth' export const middleware: Route.MiddlewareFunction[] = [authMiddleware] @@ -13,8 +12,9 @@ async function proxy({ context }: Route.ActionArgs): Promise { const pathname = new URL(request.url).pathname.replace(/^\/~\/api\//, '') - const user = context.get(userContext) as User - const url = new URL(pathname, context.cloudflare.env.API_URL) + const cloudflare = context.get(cloudflareContext) + const user = context.get(userContext)! + const url = new URL(pathname, cloudflare.env.API_URL) const headers = new Headers(request.headers) headers.set('Authorization', `Bearer ${user.accessToken}`) diff --git a/apps/admin.saladeaula.digital/workers/app.ts b/apps/admin.saladeaula.digital/workers/app.ts index 78f50ef..a6ca45a 100644 --- a/apps/admin.saladeaula.digital/workers/app.ts +++ b/apps/admin.saladeaula.digital/workers/app.ts @@ -1,12 +1,9 @@ import { createRequestHandler, RouterContextProvider } from 'react-router' +import { cloudflareContext } from '@repo/auth/context' -declare module 'react-router' { - export interface AppLoadContext { - cloudflare: { - env: Env - ctx: ExecutionContext - } - } +declare module '@repo/auth/context' { + interface CloudflareEnv extends Env {} + interface CloudflareCtx extends ExecutionContext {} } const requestHandler = createRequestHandler( @@ -16,11 +13,10 @@ const requestHandler = createRequestHandler( export default { async fetch(request, env, ctx) { - const context = new RouterContextProvider() - - return requestHandler( - request, - Object.assign(context, { cloudflare: { env, ctx } }) + const context = new RouterContextProvider( + new Map([[cloudflareContext, { env, ctx }]]) ) + + return requestHandler(request, context) } } satisfies ExportedHandler