fix and update

This commit is contained in:
lendry
2026-07-01 17:28:53 +03:00
parent 0c3c6d6d82
commit 06f1481787
16 changed files with 1502 additions and 11 deletions

View File

@@ -2,7 +2,8 @@
import { useCallback, useEffect, useMemo, useState } from 'react';
import { useRouter } from 'next/navigation';
import { Ban, BadgeCheck, Crown, FileText, KeyRound, Loader2, Search, ShieldOff, ShieldPlus, UserCheck, UserCog } from 'lucide-react';
import { Ban, BadgeCheck, Crown, FileText, KeyRound, Loader2, ScrollText, Search, ShieldOff, ShieldPlus, UserCheck, UserCog } from 'lucide-react';
import { UserInspectorDialog } from '@/components/admin/user-inspector-dialog';
import { VerificationBadge } from '@/components/id/verification-badge';
import { UserDocumentsDialog } from '@/components/documents/user-documents-dialog';
import { AdminShell } from '@/components/id/admin-shell';
@@ -47,6 +48,7 @@ export default function AdminUsersPage() {
const [actionLoading, setActionLoading] = useState(false);
const [dialog, setDialog] = useState<'password' | 'roles' | 'verification' | null>(null);
const [documentsUser, setDocumentsUser] = useState<AdminUser | null>(null);
const [inspectorUser, setInspectorUser] = useState<AdminUser | null>(null);
const [verificationIcon, setVerificationIcon] = useState(DEFAULT_VERIFICATION_ICON);
const loadUsers = useCallback(async () => {
@@ -344,7 +346,14 @@ export default function AdminUsersPage() {
</TableHeader>
<TableBody>
{users.map((user) => (
<TableRow key={user.id}>
<TableRow
key={user.id}
className={user.isBot ? undefined : 'cursor-pointer hover:bg-[#fafbff]'}
onClick={() => {
if (user.isBot) return;
setInspectorUser(user);
}}
>
<TableCell>
<div className="flex items-center gap-2">
<span className="font-medium">{user.displayName}</span>
@@ -358,7 +367,17 @@ export default function AdminUsersPage() {
<span className="rounded-full bg-[#f4f5f8] px-3 py-1 text-xs font-semibold">{statusLabels[user.status] ?? user.status}</span>
</TableCell>
<TableCell>
<div className="flex justify-end gap-2">
<div className="flex justify-end gap-2" onClick={(event) => event.stopPropagation()}>
{(currentUser?.canViewUsers || currentUser?.canManageUsers) && !user.isBot ? (
<Button
variant="secondary"
size="icon"
aria-label="Журнал и чаты"
onClick={() => setInspectorUser(user)}
>
<ScrollText className="h-4 w-4" />
</Button>
) : null}
{currentUser?.canManageUsers ? (
<>
<Button
@@ -586,6 +605,16 @@ export default function AdminUsersPage() {
token={token}
/>
) : null}
<UserInspectorDialog
user={inspectorUser}
token={token}
canModerateChats={Boolean(currentUser?.canModerateChats || currentUser?.isSuperAdmin)}
open={Boolean(inspectorUser)}
onOpenChange={(open) => {
if (!open) setInspectorUser(null);
}}
/>
</AdminShell>
);
}