React
Access and manage all organizations the user is a member of
useOrganizationList()
import { useOrganizationList } from '@snipextt/wacht';
import { useOrganizationList } from '@snipextt/wacht'; function OrganizationManager() { const { organizations, loading, createOrganization, getOrganizationMembers, inviteOrganizationMember } = useOrganizationList(); if (loading) { return <div>Loading organizations...</div>; } return ( <div> <h2>Your Organizations</h2> {organizations?.map(org => ( <div key={org.id}> <h3>{org.name}</h3> <p>{org.description}</p> </div> ))} </div> ); }
const { createOrganization } = useOrganizationList(); const result = await createOrganization({ name: 'My Company', description: 'A great company', image: fileObject // optional });
const { updateOrganization } = useOrganizationList(); await updateOrganization(organization, { name: 'New Company Name', description: 'Updated description', image: newImageFile });
const { deleteOrganization } = useOrganizationList(); await deleteOrganization(organization);
const { leaveOrganization } = useOrganizationList(); await leaveOrganization(organization);
const { getOrganizationMembers } = useOrganizationList(); const members = await getOrganizationMembers(organization);
const { getOrganizationRoles } = useOrganizationList(); const roles = await getOrganizationRoles(organization);
const { removeOrganizationMember } = useOrganizationList(); await removeOrganizationMember(organization, member);
const { getOrganizationInvitations } = useOrganizationList(); const invitations = await getOrganizationInvitations(organization);
const { inviteOrganizationMember } = useOrganizationList(); const invitation = await inviteOrganizationMember(organization, { email: 'newmember@example.com', organizationRole: roleObject, workspace: workspaceObject, // optional workspaceRole: workspaceRoleObject // optional });
const { discardOrganizationInvitation } = useOrganizationList(); await discardOrganizationInvitation(organization, invitation);
const { resendOrganizationInvitation } = useOrganizationList(); await resendOrganizationInvitation(organization, invitation);
const { getOrganizationDomains, addOrganizationDomain, verifyOrganizationDomain, removeOrganizationDomain } = useOrganizationList(); // Get domains const domains = await getOrganizationDomains(organization); // Add domain const domain = await addOrganizationDomain(organization, { fqdn: 'example.com' }); // Verify domain await verifyOrganizationDomain(organization, domain); // Remove domain await removeOrganizationDomain(organization, domain);
const { addRole, removeOrganizationRoles, addRoleToOrganizationMember, removeRoleFromOrganizationMember } = useOrganizationList(); // Add new role const newRole = await addRole(organization, { name: 'Manager', permissions: ['read', 'write', 'delete'] }); // Remove role await removeOrganizationRoles(organization, role); // Assign role to member await addRoleToOrganizationMember(organization, member, role); // Remove role from member await removeRoleFromOrganizationMember(organization, member, role);
const { refetch } = useOrganizationList(); await refetch();
function OrganizationDashboard() { const { organizations, loading, createOrganization, getOrganizationMembers } = useOrganizationList(); const [selectedOrg, setSelectedOrg] = useState(null); const [members, setMembers] = useState([]); const handleOrgSelect = async (org) => { setSelectedOrg(org); const orgMembers = await getOrganizationMembers(org); setMembers(orgMembers); }; if (loading) { return <div>Loading...</div>; } return ( <div> <h1>Organizations</h1> <div className="org-list"> {organizations?.map(org => ( <div key={org.id} onClick={() => handleOrgSelect(org)} className={selectedOrg?.id === org.id ? 'selected' : ''} > <h3>{org.name}</h3> <p>{org.description}</p> </div> ))} </div> {selectedOrg && ( <div className="org-details"> <h2>{selectedOrg.name} Members ({members.length})</h2> {members.map(member => ( <div key={member.id}> <span>{member.user.email}</span> <span>{member.role.name}</span> </div> ))} </div> )} </div> ); }