add badge

This commit is contained in:
2026-01-02 15:32:04 -03:00
parent 1abfd0e93e
commit 57b23d7cd2
9 changed files with 146 additions and 69 deletions

View File

@@ -0,0 +1,49 @@
import { type LoaderFunctionArgs, createContext } from 'react-router'
import { userContext } from '@repo/auth/context'
import { request as req } from '@repo/util/request'
export type Workspace = {
id: string
name: string
cnpj: string
}
export type WorkspaceContextProps = {
activeWorkspace: Workspace
workspaces: Workspace[]
}
export const workspaceContext = createContext<WorkspaceContextProps>()
export const workspaceMiddleware = async (
{ params, request, context }: LoaderFunctionArgs,
next: () => Promise<Response>
): Promise<Response> => {
const org_id = params.orgid
const user = context.get(userContext)!
const r = await req({
url: `/users/${user.sub}/orgs?limit=25`,
request,
context
})
if (!r.ok) {
throw new Response(await r.text(), { status: r.status })
}
const { items } = (await r.json()) as { items: { sk: string }[] }
const workspaces = items.map(({ sk, ...props }) => {
const [, id] = sk?.split('#')
return { ...props, id }
}) as Workspace[]
const activeWorkspace = workspaces.find(
({ id }) => id === org_id
) as Workspace
context.set(workspaceContext, { activeWorkspace, workspaces })
return await next()
}