remove subscription endpoint

This commit is contained in:
2026-01-17 16:39:48 -03:00
parent d26abc02c9
commit d0a9998bf4
19 changed files with 450 additions and 192 deletions

View File

@@ -34,6 +34,7 @@ import { cn } from '@repo/ui/lib/utils'
import { request as req } from '@repo/util/request'
import { TZ } from '@/conf'
import { workspaceContext } from '@/middleware/workspace'
import { statuses } from './data'
import { RangePeriod } from './range-period'
import { billingPeriod, formatDate } from './util'
@@ -43,16 +44,9 @@ export function meta({}) {
}
export async function loader({ context, request, params }: Route.LoaderArgs) {
const workspace = context.get(workspaceContext)
const { searchParams } = new URL(request.url)
const subscription = await req({
url: `/orgs/${params.orgid}/subscription`,
context,
request
})
const { billing_day = 1 } = (await subscription.json()) as {
billing_day: number
}
const { billing_day = 1 } = workspace?.subscription || {}
const [startDate, endDate] = billingPeriod(
billing_day,

View File

@@ -9,6 +9,7 @@ import {
CircleCheckIcon,
CircleXIcon,
EllipsisIcon,
ExternalLinkIcon,
HelpCircleIcon
} from 'lucide-react'
import { useEffect } from 'react'
@@ -355,9 +356,14 @@ function BankSlipPaymentMethod({
{invoice?.bank_slip ? (
<>
<Button variant="link" asChild>
<Button
size="sm"
variant="secondary"
className="cursor-pointer"
asChild
>
<a href={invoice.bank_slip.bank_slip_pdf_url} target="_blank">
Abrir o boleto bancário
<ExternalLinkIcon /> Abrir o boleto bancário
</a>
</Button>
</>

View File

@@ -1,13 +1,18 @@
import type { Route } from './+types/route'
import { useEffect } from 'react'
import { zodResolver } from '@hookform/resolvers/zod'
import { PatternFormat } from 'react-number-format'
import { useFetcher, Link, useOutletContext } from 'react-router'
import { AlertCircleIcon } from 'lucide-react'
import { useEffect } from 'react'
import { useForm } from 'react-hook-form'
import { PatternFormat } from 'react-number-format'
import { Link, useFetcher, useOutletContext } from 'react-router'
import { toast } from 'sonner'
import {
Alert,
AlertDescription,
AlertTitle
} from '@repo/ui/components/ui/alert'
import { Button } from '@repo/ui/components/ui/button'
import {
Card,
@@ -27,13 +32,9 @@ import {
import { Input } from '@repo/ui/components/ui/input'
import { Spinner } from '@repo/ui/components/ui/spinner'
import { type User } from '@repo/ui/routes/users/data'
import {
Alert,
AlertDescription,
AlertTitle
} from '@repo/ui/components/ui/alert'
import { request as req, HttpMethod } from '@repo/util/request'
import { HttpMethod, request as req } from '@repo/util/request'
import { FieldSet } from '@repo/ui/components/ui/field'
import { formSchema, type Schema } from '../_.$orgid.users.add/data'
export async function action({ params, request, context }: Route.ActionArgs) {
@@ -109,80 +110,84 @@ export default function Route({}: Route.ComponentProps) {
</CardDescription>
</CardHeader>
<CardContent className="space-y-4">
<FormField
control={control}
name="name"
render={({ field }) => (
<FormItem>
<FormLabel>Nome</FormLabel>
<FormControl>
<Input {...field} />
</FormControl>
<FormMessage />
</FormItem>
)}
/>
<CardContent>
<FieldSet>
<FormField
control={control}
name="name"
render={({ field }) => (
<FormItem>
<FormLabel>Nome</FormLabel>
<FormControl>
<Input {...field} />
</FormControl>
<FormMessage />
</FormItem>
)}
/>
<FormField
control={control}
name="email"
disabled={true}
render={({ field }) => (
<FormItem>
<FormLabel>Email</FormLabel>
<FormControl>
<Input {...field} />
</FormControl>
<FormLabel className="text-sm font-normal text-muted-foreground">
<span>
Para gerenciar os emails ou trocar o email principal,
use as{' '}
<Link
to="emails"
className="text-blue-400 underline hover:no-underline"
>
configurações de emails
</Link>
</span>
</FormLabel>
<FormMessage />
</FormItem>
)}
/>
<FormField
control={control}
name="email"
disabled={true}
render={({ field }) => (
<FormItem>
<FormLabel>Email</FormLabel>
<FormControl>
<Input {...field} />
</FormControl>
<FormLabel className="text-sm font-normal text-muted-foreground">
<span>
Para gerenciar os emails ou trocar o email principal,
use as{' '}
<Link
to="emails"
className="text-blue-400 underline hover:no-underline"
>
configurações de emails
</Link>
</span>
</FormLabel>
<FormMessage />
</FormItem>
)}
/>
<FormField
control={control}
name="cpf"
render={({ field: { onChange, ref, ...props } }) => (
<FormItem>
<FormLabel>CPF</FormLabel>
<FormControl>
<PatternFormat
format="###.###.###-##"
mask="_"
placeholder="___.___.___-__"
customInput={Input}
getInputRef={ref}
onValueChange={({ value }) => {
onChange(value)
}}
{...props}
/>
</FormControl>
<FormMessage />
</FormItem>
)}
/>
<FormField
control={control}
name="cpf"
render={({ field: { onChange, ref, ...props } }) => (
<FormItem>
<FormLabel>CPF</FormLabel>
<FormControl>
<PatternFormat
format="###.###.###-##"
mask="_"
placeholder="___.___.___-__"
customInput={Input}
getInputRef={ref}
onValueChange={({ value }) => {
onChange(value)
}}
{...props}
/>
</FormControl>
<FormMessage />
</FormItem>
)}
/>
<Button
type="submit"
className="cursor-pointer"
disabled={formState.isSubmitting}
>
{formState.isSubmitting && <Spinner />}
Editar
</Button>
<div className="flex justify-end">
<Button
type="submit"
className="cursor-pointer"
disabled={formState.isSubmitting}
>
{formState.isSubmitting && <Spinner />}
Editar
</Button>
</div>
</FieldSet>
</CardContent>
</Card>
</fieldset>

View File

@@ -1,23 +1,23 @@
import type { Route } from './+types/route'
import * as cookie from 'cookie'
import { Outlet, type ShouldRevalidateFunctionArgs } from 'react-router'
import { useEffect } from 'react'
import { Outlet, type ShouldRevalidateFunctionArgs } from 'react-router'
import { userContext } from '@repo/auth/context'
import { authMiddleware } from '@repo/auth/middleware/auth'
import { ModeToggle, ThemedImage } from '@repo/ui/components/dark-mode'
import { NavUser } from '@repo/ui/components/nav-user'
import {
SidebarInset,
SidebarProvider,
SidebarTrigger
} from '@repo/ui/components/ui/sidebar'
import { userContext } from '@repo/auth/context'
import { authMiddleware } from '@repo/auth/middleware/auth'
import { Toaster } from '@repo/ui/components/ui/sonner'
import { ModeToggle, ThemedImage } from '@repo/ui/components/dark-mode'
import { NavUser } from '@repo/ui/components/nav-user'
import { WorkspaceProvider } from '@/components/workspace-switcher'
import { AppSidebar } from '@/components/app-sidebar'
import { workspaceMiddleware, workspaceContext } from '@/middleware/workspace'
import { WorkspaceProvider } from '@/components/workspace-switcher'
import { workspaceContext, workspaceMiddleware } from '@/middleware/workspace'
// import { Notification } from '@/components/notification'