useWorkspaceList
The useWorkspaceList hook provides methods for managing workspaces the user has access to, including creating, updating, deleting, and managing workspace members and roles.
Return Value
workspaces
WorkspaceWithOrganization[]
List of workspaces the user has access to
Show Refetch the workspaces list
Resolves when the workspaces list is refetched
Resolves when the workspace is left
Show Create a new workspace
The organization ID to create the workspace in
Optional workspace description
Workspace fields to update
Resolves when the workspace is deleted
Show Get workspace members
options
{ page?: number; limit?: number }
Pagination options
returns
Promise<{ data: WorkspaceMember[]; total: number }>
Paginated list of workspace members
Show Remove a workspace member
Resolves when the member is removed
Show Add a role to a workspace member
Resolves when the role is added
removeWorkspaceMemberRole
Show Remove a role from a workspace member
Resolves when the role is removed
Show Create a workspace role
List of permissions for this role
Show Delete a workspace role
Resolves when the role is deleted
Show Get workspace invitations
List of workspace invitations
createWorkspaceInvitation
Show Create a workspace invitation
The email address of the user to invite
Optional workspace role ID to assign
discardWorkspaceInvitation
Show Discard a workspace invitation
The invitation to discard
Resolves when the invitation is discarded
resendWorkspaceInvitation
Show Resend a workspace invitation
import { useWorkspaceList } from "@wacht/react-router" ;
function WorkspacesPage () {
const { workspaces , loading , createWorkspace } = useWorkspaceList ();
const handleCreate = async ( organizationId : string ) => {
await createWorkspace ( organizationId , "My Workspace" );
};
return (
< div >
{ workspaces . map (( ws ) => (
< div key = { ws . id } > { ws . name } </ div >
)) }
</ div >
);
}
Data Structures
Show WorkspaceWithOrganization
interface WorkspaceWithOrganization {
id : string ;
name : string ;
image_url : string ;
description : string ;
member_count : number ;
public_metadata : Record < string , unknown >;
private_metadata : Record < string , unknown >;
enforce_2fa : boolean ;
enable_ip_restriction : boolean ;
whitelisted_ips : string [];
created_at : string ;
updated_at : string ;
segments : Segment [];
organization : Organization ;
eligibility_restriction ?: EligibilityRestriction ;
}
Examples
Create Workspace
import { useWorkspaceList } from "@wacht/react-router" ;
function CreateWorkspace () {
const { createWorkspace } = useWorkspaceList ();
const handleCreate = async () => {
await createWorkspace ( "org_123" , "Engineering Team" );
};
return < button onClick = { handleCreate } > Create Workspace </ button > ;
}
Update Workspace Settings
import { useWorkspaceList } from "@wacht/react-router" ;
function WorkspaceSettings () {
const { workspaces , updateWorkspace } = useWorkspaceList ();
const workspace = workspaces [ 0 ];
const enable2FA = async () => {
await updateWorkspace ( workspace , { enforce_2fa: true });
};
return < button onClick = { enable2FA } > Enable 2FA </ button > ;
}
Manage Members
import { useWorkspaceList } from "@wacht/react-router" ;
function WorkspaceMembers ({ workspace }) {
const { getWorkspaceMembers } = useWorkspaceList ();
const [ members , setMembers ] = useState ([]);
useEffect (() => {
getWorkspaceMembers ( workspace , { page: 1 , limit: 10 }). then ( setMembers );
}, [ workspace ]);
return < div > { /* Render members */ } </ div > ;
}
Create Workspace Role
import { useWorkspaceList } from "@wacht/react-router" ;
function CreateRole ({ workspace }) {
const { createWorkspaceRole } = useWorkspaceList ();
const handleCreate = async () => {
await createWorkspaceRole ( workspace , "Admin" , [ "read" , "write" , "delete" ]);
};
return < button onClick = { handleCreate } > Create Admin Role </ button > ;
}