v0.1 - макет интерфейса, аутентификация через логин, аккаунт админа, создание партии в 2 этапа, базовые настройки профиля и группы, переключение между группами, статистика
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
import { Spinner } from "../../components/Spinner";
|
||||
import { useToast } from "../../context/ToastContext";
|
||||
import { useAdminUpdateUser, useAdminUsers } from "../../hooks/admin";
|
||||
|
||||
export function AdminAccountsPage() {
|
||||
const { data: users, isLoading } = useAdminUsers();
|
||||
const update = useAdminUpdateUser();
|
||||
const toast = useToast();
|
||||
|
||||
if (isLoading) return <Spinner />;
|
||||
|
||||
return (
|
||||
<div>
|
||||
<h3>Аккаунты</h3>
|
||||
<div className="stack">
|
||||
{(users ?? []).map((u) => (
|
||||
<div key={u.id} className="card" style={{ margin: 0 }}>
|
||||
<div className="row-between">
|
||||
<div>
|
||||
<b>{u.nickname}</b> {u.role === "admin" && <span className="badge">admin</span>}
|
||||
<div className="muted small">
|
||||
#{u.id} · {u.auth_provider} · {u.is_active ? "активен" : "отключён"}
|
||||
</div>
|
||||
</div>
|
||||
{u.role !== "admin" && (
|
||||
<button
|
||||
className="btn small"
|
||||
onClick={async () => {
|
||||
await update
|
||||
.mutateAsync({ userId: u.id, is_active: !u.is_active })
|
||||
.catch(() => {});
|
||||
toast.show("Сохранено");
|
||||
}}
|
||||
>
|
||||
{u.is_active ? "Отключить" : "Включить"}
|
||||
</button>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user