import { useOrg } from '@components/Contexts/OrgContext'; import PageLoading from '@components/Objects/Loaders/PageLoading'; import RolesUpdate from '@components/Objects/Modals/Dash/OrgUsers/RolesUpdate'; import ConfirmationModal from '@components/StyledElements/ConfirmationModal/ConfirmationModal'; import Modal from '@components/StyledElements/Modal/Modal'; import Toast from '@components/StyledElements/Toast/Toast'; import { getAPIUrl } from '@services/config/config'; import { removeUserFromOrg } from '@services/organizations/orgs'; import { swrFetcher } from '@services/utils/ts/requests'; import { KeyRound, LogOut, X } from 'lucide-react'; import React, { use, useEffect } from 'react' import toast from 'react-hot-toast'; import useSWR, { mutate } from 'swr'; function OrgUsers() { const org = useOrg() as any; const { data: orgUsers } = useSWR(org ? `${getAPIUrl()}orgs/${org?.id}/users` : null, swrFetcher); const [rolesModal, setRolesModal] = React.useState(false); const [selectedUser, setSelectedUser] = React.useState(null) as any; const [isLoading, setIsLoading] = React.useState(true); const handleRolesModal = (user_uuid: any) => { setSelectedUser(user_uuid); setRolesModal(!rolesModal); } const handleRemoveUser = async (user_id: any) => { const res = await removeUserFromOrg(org.id, user_id); if (res.status === 200) { await mutate(`${getAPIUrl()}orgs/${org.id}/users`); } else { toast.error('Error ' + res.status + ': ' + res.data.detail) } } useEffect(() => { if (orgUsers) { setIsLoading(false) console.log(orgUsers) } }, [org, orgUsers]) return (
{isLoading ?
: <>

Active users

Manage your organization users, assign roles and permissions

<> {orgUsers?.map((user: any) => ( ))}
User Role Actions
{user.user.first_name + ' ' + user.user.last_name} @{user.user.username} {user.role.name} handleRolesModal(user.user.user_uuid)} minHeight="no-min" dialogContent={ } dialogTitle="Update Role" dialogDescription={"Update @" + user.user.username + "'s role"} dialogTrigger={ } /> Remove from organization } functionToExecute={() => { handleRemoveUser(user.user.id) }} status='warning' >
}
) } export default OrgUsers