import Link from "next/link"; import { redirect } from "next/navigation"; import { apiGet } from "@/lib/server-api"; import { badgeClass, pauseReasonLabel, userStatusLabel } from "@/lib/format"; import { isRestricted } from "@/lib/access"; import type { Me, UserSummary } from "@/lib/types"; type Search = Promise>; export default async function UsersPage({ searchParams }: { searchParams: Search }) { const me = await apiGet("/auth/me"); if (isRestricted(me.account)) redirect(`/usuarios/${me.account.user_id}`); const sp = await searchParams; const params = new URLSearchParams(); for (const key of ["status", "q", "custom_window"]) { const v = sp[key]; if (typeof v === "string" && v) params.set(key, v); } const { users } = await apiGet<{ users: UserSummary[] }>(`/users?${params}`); return ( <>

Usuários

{users.length === 0 && ( )} {users.map((u) => ( ))}
ID Nome Status Credencial Lembretes Janela
Nenhum usuário encontrado.
{u.id} {u.display_name} {u.is_bot_admin && admin do bot} {userStatusLabel[u.status]} {!u.has_credential ? ( não configurada ) : u.credential_validated ? ( validada ) : ( não validada )} {u.consecutive_failures > 0 && {u.consecutive_failures} falha(s)} {u.notifications_enabled ? ( ligados ) : ( {u.paused_reason ? pauseReasonLabel[u.paused_reason] : "desligados"} )} {u.custom_window ? personalizada : global}
); }