import { useState } from 'react'; import { useTranslation } from 'react-i18next'; import { RotateCcw, UserPlus, Users } from 'lucide-react'; import type { NdUser } from '../../api/navidromeAdmin'; import ConfirmModal from '../ConfirmModal'; import { useUserMgmtData } from '../../hooks/useUserMgmtData'; import { useUserMgmtActions } from '../../hooks/useUserMgmtActions'; import { UserForm } from './UserForm'; import { UserMgmtRow } from './userMgmt/UserMgmtRow'; import { MagicStringModal } from './userMgmt/MagicStringModal'; export function UserManagementSection({ serverUrl, token, currentUsername, }: { serverUrl: string; token: string; currentUsername: string; }) { const { t, i18n } = useTranslation(); const { users, libraries, loading, loadError, load } = useUserMgmtData(serverUrl, token, t); const [editing, setEditing] = useState(null); const [confirmingDelete, setConfirmingDelete] = useState(null); const [magicRowUser, setMagicRowUser] = useState(null); const { busy, handleSave, handleSaveAndGetMagic, performDelete } = useUserMgmtActions({ serverUrl, token, libraries, editing, setEditing, reload: load, t, }); return (

{t('settings.userMgmtTitle')}

{t('settings.userMgmtDesc')}
{loading && (
)} {!loading && loadError && (
{t('settings.userMgmtLoadFriendly')}
{loadError}
)} {!loading && !loadError && ( <> {editing ? ( setEditing(null)} busy={busy} /> ) : ( )} {users.length === 0 ? (
{t('settings.userMgmtEmpty')}
) : (
{users.map(u => ( ))}
)} )} { if (!confirmingDelete) return; const target = confirmingDelete; setConfirmingDelete(null); void performDelete(target); }} onCancel={() => setConfirmingDelete(null)} /> {magicRowUser && ( setMagicRowUser(null)} onSuccess={load} t={t} /> )}
); }