"use client"; import MoneyValues from "@/components/money-values"; import { Button } from "@/components/ui/button"; import { Card, CardAction, CardContent, CardFooter, CardHeader, CardTitle, } from "@/components/ui/card"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { cn } from "@/lib/utils/ui"; import { RiCheckLine, RiDeleteBinLine, RiEyeLine, RiMoreLine, } from "@remixicon/react"; import { formatDistanceToNow } from "date-fns"; import { ptBR } from "date-fns/locale"; import type { InboxItem } from "./types"; interface InboxCardProps { item: InboxItem; onProcess: (item: InboxItem) => void; onDiscard: (item: InboxItem) => void; onViewDetails: (item: InboxItem) => void; } export function InboxCard({ item, onProcess, onDiscard, onViewDetails, }: InboxCardProps) { const amount = item.parsedAmount ? parseFloat(item.parsedAmount) : null; const isReceita = item.parsedTransactionType === "Receita"; // O timestamp vem do app Android em horário local mas salvo como UTC // Precisamos interpretar o valor UTC como se fosse horário de Brasília const rawDate = new Date(item.notificationTimestamp); // Ajusta adicionando o offset de Brasília (3 horas) para corrigir o cálculo do "há X tempo" const BRASILIA_OFFSET_MS = 3 * 60 * 60 * 1000; const notificationDate = new Date(rawDate.getTime() + BRASILIA_OFFSET_MS); const timeAgo = formatDistanceToNow(notificationDate, { addSuffix: true, locale: ptBR, }); // Para exibição, usa UTC pois o valor já representa horário de Brasília const formattedTime = new Intl.DateTimeFormat("pt-BR", { day: "2-digit", month: "short", hour: "2-digit", minute: "2-digit", timeZone: "UTC", }).format(rawDate); return ( {/* Header com app e valor */}
{item.sourceAppName || item.sourceApp} {" "} {timeAgo} {amount !== null && ( )}
onViewDetails(item)}> Ver detalhes onProcess(item)}> Processar onDiscard(item)} className="text-destructive" > Descartar
{/* Conteúdo da notificação */} {item.originalTitle && (

{item.originalTitle}

)}

{item.originalText}

{/* Botões de ação */}
); }