"use client"; import { useState } from "react"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { ColumnDef } from "@tanstack/react-table"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { DataTable } from "@/components/data-table/data-table"; import { useUsers, useSetupUserToken } from "@/modules/users/hooks"; import { userTokenSchema, type UserTokenInput, User } from "@/modules/users/schemas"; import { useToast } from "@/hooks/use-toast"; import { Users as UsersIcon, Eye, Copy } from "lucide-react"; import { formatDateTime } from "@/lib/utils"; export default function UsersPage() { const { toast } = useToast(); const { data, isLoading } = useUsers(); const setupMutation = useSetupUserToken(); const [selectedUser, setSelectedUser] = useState(null); const [isDetailOpen, setIsDetailOpen] = useState(false); const { register, handleSubmit, reset, formState: { errors }, } = useForm({ resolver: zodResolver(userTokenSchema), }); const onSubmit = async (data: UserTokenInput) => { try { await setupMutation.mutateAsync(data); toast({ title: "Token setup successful", description: "User token has been configured" }); reset(); } catch (error) { toast({ title: "Setup failed", variant: "destructive" }); } }; const handleCopy = async (text: string) => { try { await navigator.clipboard.writeText(text); toast({ title: "Copied to clipboard", description: "Text has been copied successfully" }); } catch (error) { toast({ title: "Copy failed", variant: "destructive" }); } }; const handleOpenDetail = (user: User) => { setSelectedUser(user); setIsDetailOpen(true); }; const columns: ColumnDef[] = [ { accessorKey: "UserID_UT", header: "User ID", cell: ({ row }) => (
{row.original.UserID_UT}
), }, { accessorKey: "Token_UT", header: "Token", cell: ({ row }) => (
{row.original.Token_UT}
), }, { accessorKey: "CreatedAt_UT", header: "Created", cell: ({ row }) => formatDateTime(row.original.CreatedAt_UT), }, { accessorKey: "UpdatedAt_UT", header: "Updated", cell: ({ row }) => formatDateTime(row.original.UpdatedAt_UT), }, { id: "actions", cell: ({ row }) => ( ), }, ]; const users = data?.data || []; return (

Users Management

Manage user tokens and settings

All Users Total: {users.length} users {isLoading ? (
Loading...
) : ( )}
Setup User Token Configure user authentication token
{errors.userID && (

{errors.userID.message}

)}
{errors.token && (

{errors.token.message}

)}
User Details Complete user information and token {selectedUser && (

{selectedUser.UserID_UT}

{selectedUser.UUID_UT}

{selectedUser.Token_UT}

{formatDateTime(selectedUser.CreatedAt_UT)}

{formatDateTime(selectedUser.UpdatedAt_UT)}

)}
); }