Skip to main content

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
loading
boolean
Whether data is loading
error
Error | null
Any error that occurred
refetch
leaveWorkspace
createWorkspace
updateWorkspace
deleteWorkspace
getWorkspaceMembers
removeWorkspaceMember
addWorkspaceMemberRole
removeWorkspaceMemberRole
getWorkspaceRoles
createWorkspaceRole
deleteWorkspaceRole
getWorkspaceInvitations
createWorkspaceInvitation
discardWorkspaceInvitation
resendWorkspaceInvitation
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

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>;
}