import Link from "next/link"; import { apiGet } from "@/lib/server-api"; import { badgeClass, dayStatusLabel, fmtDateTime, pauseReasonLabel, userStatusLabel } from "@/lib/format"; import { isRestricted } from "@/lib/access"; import type { Me, UserDetail } from "@/lib/types"; import { ActionButton } from "@/components/ActionButton"; import { CredentialsForm, ScheduleForm, TodayPanel } from "./forms"; export default async function UserPage({ params }: { params: Promise<{ id: string }> }) { const { id } = await params; const [detail, me] = await Promise.all([apiGet(`/users/${id}`), apiGet("/auth/me")]); const { user, credential, today } = detail; const restricted = isRestricted(me.account); const canAdmin = me.account.role !== "viewer"; // Conta de leitura ligada a este usuário também altera as próprias configurações. const canEdit = canAdmin || me.account.user_id === user.id; const base = `/users/${user.id}`; return ( <> {!restricted && (

← Usuários

)}

{user.display_name} {userStatusLabel[user.status]}

ID {user.id} · chat {user.telegram_chat_id} · cadastrado em {fmtDateTime(user.created_at)}

Cadastro e lembretes

Lembretes
{user.notifications_enabled ? "ligados" : user.paused_reason ? pauseReasonLabel[user.paused_reason] : "desligados"}
Admin do bot
{user.is_bot_admin ? "sim" : "não"}
Hoje ({today.day})
{dayStatusLabel[today.status]}{" "} {today.last_point_count} ponto(s) na última consulta · próxima consulta: {fmtDateTime(today.next_check_at)}
{canEdit && (
{canAdmin && user.status !== "active" && } {canAdmin && user.status !== "disabled" && ( )} {user.status === "active" && (user.notifications_enabled ? ( ) : ( ))} {canAdmin && ( )} {canAdmin && (today.status === "no_points" || today.status === "not_working") && ( )}
)}

Credencial PontoMais

{credential ? (
E-mail
{credential.api_email}
Situação
{credential.validated ? ( validada em {fmtDateTime(credential.last_validated_at)} ) : ( não validada )}
Falhas seguidas
{credential.consecutive_failures}
{credential.last_error && ( <>
Último erro
{credential.last_error}
)}
) : (

Nenhuma credencial configurada. Sem ela o usuário não pode ser ativado.

)} {canEdit && }

Jornada e janela de consulta

Pontos de hoje

Lembretes deste usuário ·{" "} {!restricted && Auditoria deste usuário}

); }