import React, { useState } from "react"; import { X } from "@phosphor-icons/react"; import Admin from "@/models/admin"; import { MessageLimitInput, RoleHintDisplay } from "../.."; import { AUTH_USER } from "@/utils/constants"; export default function EditUserModal({ currentUser, user, closeModal }) { const [role, setRole] = useState(user.role); const [error, setError] = useState(null); const [messageLimit, setMessageLimit] = useState({ enabled: user.dailyMessageLimit !== null, limit: user.dailyMessageLimit || 10, }); const handleUpdate = async (e) => { setError(null); e.preventDefault(); const data = {}; const form = new FormData(e.target); for (var [key, value] of form.entries()) { if (!value || value === null) continue; data[key] = value; } if (messageLimit.enabled) { data.dailyMessageLimit = messageLimit.limit; } else { data.dailyMessageLimit = null; } const { success, error } = await Admin.updateUser(user.id, data); if (success) { // Update local storage if we're editing our own user if (currentUser && currentUser.id === user.id) { currentUser.username = data.username; currentUser.bio = data.bio; currentUser.role = data.role; localStorage.setItem(AUTH_USER, JSON.stringify(currentUser)); } window.location.reload(); } setError(error); }; return (

Edit {user.username}

Username must only contain lowercase letters, periods, numbers, underscores, and hyphens with no spaces

Password must be at least 8 characters long