fix and update
This commit is contained in:
@@ -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>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user