import { useState, useEffect } from 'react' import { cloudflareConfig } from 'shared/config/cloudflare.mjs' import { useBackend } from 'shared/hooks/use-backend.mjs' import { useAccount } from 'shared/hooks/use-account.mjs' import { useToast } from 'shared/hooks/use-toast.mjs' import Link from 'next/link' import Markdown from 'react-markdown' import { Json } from 'shared/components/json.mjs' import { AccountRole } from 'shared/components/account/role.mjs' import { AccountStatus } from 'shared/components/account/status.mjs' import { Loading } from 'shared/components/spinner.mjs' import { freeSewingConfig } from 'shared/config/freesewing.config.mjs' const roles = ['user', 'curator', 'bughunter', 'support', 'admin'] export const ImpersonateButton = ({ userId }) => { const toast = useToast() const backend = useBackend() const { impersonate } = useAccount() if (!userId) return null const impersonateUser = async () => { const result = await backend.adminImpersonateUser(userId) if (result.success) { impersonate(result.data) toast.for.settingsSaved() } else toast.for.backendError() } return ( ) } export const Row = ({ title, val }) => ( {title} {val} ) export const Hits = ({ results }) => ( <> {results && results.username && results.username.length > 0 && ( <>

Results based on username

{results.username.map((user) => ( ))} )} {results && results.email && results.email.length > 0 && ( <>

Results based on E-mail address

{results.email.map((user) => ( ))} )} ) export const ShowUser = ({ user, button = null }) => (
{user.username} | | | {user.id}
{button}
{user.bio}
) export const User = ({ user }) => (
Manage user } />
) export const ManageUser = ({ userId }) => { // Hooks const backend = useBackend() const toast = useToast() // State const [user, setUser] = useState({}) // Effect useEffect(() => { const loadUser = async () => { const result = await backend.adminLoadUser(userId) if (result.success) setUser(result.data.user) } loadUser() }, [userId]) const updateUser = async (data) => { const result = await backend.adminUpdateUser({ id: userId, data }) if (result.success) { toast.for.settingsSaved() setUser(result.data.user) } else toast.for.backendError() } return user.id ? (
} />
{roles.map((role) => ( ))}
{user.mfaEnabled && ( )} {Object.keys(freeSewingConfig.statuses).map((status) => ( ))}
{user.id ? : null}
) : ( ) }