useWorkspaceMemberships
The useWorkspaceMemberships hook fetches and provides a list of all workspace memberships for the current user.
Return Value
List of workspace memberships for the current user
Whether the memberships are loading
Show Refetch the memberships list
Resolves when the memberships list is refetched
import { useWorkspaceMemberships } from "@wacht/tanstack-router";
function WorkspaceList() {
const { workspaceMemberships, loading, refetch } = useWorkspaceMemberships();
return (
<ul>
{workspaceMemberships?.map((membership) => (
<li key={membership.id}>
{membership.workspace.name}
</li>
))}
</ul>
);
}
Data Structures
interface WorkspaceMembership {
id: string;
workspace: Workspace;
organization_id: string;
user_id: string;
roles: WorkspaceRole[];
organization: Organization;
public_metadata: Record<string, unknown>;
created_at: string;
updated_at: string;
eligibility_restriction?: EligibilityRestriction;
}
Examples
List All Workspaces
import { useWorkspaceMemberships } from "@wacht/tanstack-router";
function WorkspaceList() {
const { workspaceMemberships, loading } = useWorkspaceMemberships();
if (loading) return <div>Loading...</div>;
return (
<ul>
{workspaceMemberships.map((membership) => (
<li key={membership.id}>
{membership.workspace.name}
</li>
))}
</ul>
);
}
Refetch After Update
import { useWorkspaceMemberships, useWorkspaceList } from "@wacht/tanstack-router";
function WorkspaceManager() {
const { refetch } = useWorkspaceMemberships();
const { createWorkspace } = useWorkspaceList();
const handleCreate = async () => {
await createWorkspace("org_id", "New Workspace");
await refetch();
};
return <button onClick={handleCreate}>Create Workspace</button>;
}