Skip to main content

useActiveWorkspace

The useActiveWorkspace hook provides access to the currently active workspace and methods to manage it.

Return Value

activeWorkspace
Workspace | null
The active workspace object
activeMembership
WorkspaceMembership | null
User’s membership in active workspace
loading
boolean
Whether data is loading
error
Error | null
Any error that occurred
refetch
updateWorkspace
getMembers
getRoles
leave
deleteWorkspace
removeMember
addMemberRole
removeMemberRole
inviteMember

Return Types

Invitation
WorkspaceRole
getInvitations
discardInvitation
resendInvitation

Examples

Display Active Workspace

import { useActiveWorkspace } from "@wacht/tanstack-router";

function WorkspaceHeader() {
  const { activeWorkspace } = useActiveWorkspace();

  return (
    <header>
      <h1>{activeWorkspace?.name}</h1>
      <p>{activeWorkspace?.description}</p>
    </header>
  );
}

Update Workspace

import { useActiveWorkspace } from "@wacht/tanstack-router";

function WorkspaceSettings() {
  const { updateWorkspace } = useActiveWorkspace();

  const handleUpdate = async () => {
    await updateWorkspace({
      name: "Updated Name",
      description: "Updated description",
    });
  };

  return <button onClick={handleUpdate}>Update Workspace</button>;
}

Get Members

import { useActiveWorkspace } from "@wacht/tanstack-router";

function WorkspaceMembers() {
  const { getMembers } = useActiveWorkspace();
  const [members, setMembers] = useState([]);

  useEffect(() => {
    getMembers({ page: 1, limit: 10 }).then((result) => {
      setMembers(result.data);
    });
  }, [getMembers]);

  return (
    <ul>
      {members.map((member) => (
        <li key={member.id}>{member.user?.first_name}</li>
      ))}
    </ul>
  );
}

Leave Workspace

import { useActiveWorkspace } from "@wacht/tanstack-router";

function LeaveWorkspaceButton() {
  const { leave } = useActiveWorkspace();

  return (
    <button onClick={() => leave()}>
      Leave Workspace
    </button>
  );
}

Invite Member

import { useActiveWorkspace } from "@wacht/tanstack-router";

function InviteMember() {
  const { inviteMember, activeWorkspace } = useActiveWorkspace();

  const handleInvite = async (email: string) => {
    const invitation = await inviteMember({
      email,
      workspaceRoleId: "workspace_role_id_123",
    });

    if (invitation) {
      console.log("Invitation sent:", invitation.id);
    }
  };

  return (
    <button onClick={() => handleInvite("[email protected]")}>
      Invite to {activeWorkspace?.name}
    </button>
  );
}