unlink user

This commit is contained in:
2025-11-12 15:50:05 -03:00
parent 850f620f78
commit 707b1f5012
9 changed files with 155 additions and 22 deletions

View File

@@ -3,5 +3,17 @@ export function meta({}) {
}
export default function Route() {
return <>index org</>
return (
<>
<div className="space-y-0.5 mb-8">
<h1 className="text-2xl font-bold tracking-tight">
Gerenciar certificações
</h1>
<p className="text-muted-foreground">
Centralize o controle das certificações dos colaboradores e acompanhe
prazos e renovações com facilidade.
</p>
</div>
</>
)
}

View File

@@ -2,14 +2,17 @@
import { formatCPF } from '@brazilian-utils/brazilian-utils'
import { type ColumnDef } from '@tanstack/react-table'
import { useToggle } from 'ahooks'
import {
EllipsisVerticalIcon,
PencilIcon,
UserRoundMinusIcon
} from 'lucide-react'
import { NavLink } from 'react-router'
import { NavLink, useParams } from 'react-router'
import { toast } from 'sonner'
import { Abbr } from '@/components/abbr'
import { useDataTable } from '@/components/data-table/data-table'
import { Avatar, AvatarFallback } from '@repo/ui/components/ui/avatar'
import { Button } from '@repo/ui/components/ui/button'
import {
@@ -123,12 +126,39 @@ export const columns: ColumnDef<User>[] = [
)}
</NavLink>
</DropdownMenuItem>
<DropdownMenuItem variant="destructive">
<UserRoundMinusIcon /> Desvincular
</DropdownMenuItem>
<UnlinkMenuItem userId={row.id} />
</DropdownMenuContent>
</DropdownMenu>
</div>
)
}
]
function UnlinkMenuItem({ userId }: { userId: string }) {
const [loading, { set }] = useToggle(false)
const { orgid } = useParams()
const { table } = useDataTable<User>()
return (
<DropdownMenuItem
variant="destructive"
disabled={loading}
onClick={async (e) => {
e.preventDefault()
set(true)
const r = await fetch(`/~/api/orgs/${orgid}/users/${userId}`, {
method: 'DELETE'
})
if (r.ok) {
toast.info('O colaborador foi desvinculado')
// @ts-ignore
table.options.meta?.removeRow?.(userId)
}
}}
>
{loading ? <Spinner /> : <UserRoundMinusIcon />} Desvincular
</DropdownMenuItem>
)
}

View File

@@ -73,8 +73,6 @@ export async function action({ params, request, context }: Route.ActionArgs) {
context
})
console.log(r)
if (!r.ok) {
const error = await r.json().catch(() => ({}))
return { ok: false, error }