import { useLHSession } from '@components/Contexts/LHSessionContext' 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 } from 'lucide-react' import React, { useEffect } from 'react' import toast from 'react-hot-toast' import useSWR, { mutate } from 'swr' function OrgUsers() { const org = useOrg() as any const session = useLHSession() as any const access_token = session?.data?.tokens?.access_token; const { data: orgUsers } = useSWR( org ? `${getAPIUrl()}orgs/${org?.id}/users` : null, (url) => swrFetcher(url, access_token) ) 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,access_token) 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) } }, [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