import { useState } from 'react'; import ConfirmationModal from '@/components/elements/ConfirmationModal'; import { ServerContext } from '@/state/server'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faTrashAlt } from '@fortawesome/free-solid-svg-icons'; import { Subuser } from '@/state/server/subusers'; import deleteSubuser from '@/api/server/users/deleteSubuser'; import { Actions, useStoreActions } from 'easy-peasy'; import { ApplicationStore } from '@/state'; import { httpErrorToHuman } from '@/api/http'; import tw from 'twin.macro'; export default ({ subuser }: { subuser: Subuser }) => { const [loading, setLoading] = useState(false); const [showConfirmation, setShowConfirmation] = useState(false); const uuid = ServerContext.useStoreState(state => state.server.data!.uuid); const removeSubuser = ServerContext.useStoreActions(actions => actions.subusers.removeSubuser); const { addError, clearFlashes } = useStoreActions((actions: Actions) => actions.flashes); const doDeletion = () => { setLoading(true); clearFlashes('users'); deleteSubuser(uuid, subuser.uuid) .then(() => { setLoading(false); removeSubuser(subuser.uuid); }) .catch(error => { console.error(error); addError({ key: 'users', message: httpErrorToHuman(error) }); setShowConfirmation(false); }); }; return ( <> doDeletion()} onModalDismissed={() => setShowConfirmation(false)} > Are you sure you wish to remove this subuser? They will have all access to this server revoked immediately. ); };