From e351d53dd5de1ffea9cf5acbdececdcf11ae901f Mon Sep 17 00:00:00 2001
From: Jannis Braun <151788261+TheZwiss@users.noreply.github.com>
Date: Wed, 29 Apr 2026 21:52:20 +0200
Subject: [PATCH] =?UTF-8?q?fix(web):=20SpaceInviteCard=20=E2=80=94=20real?=
=?UTF-8?q?=20embed=20idiom=20and=20correct=20getApiForOrigin=20import=20p?=
=?UTF-8?q?ath?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
packages/web/src/api/client.ts | 6 ------
.../components/chat/SpaceInviteCard.test.tsx | 20 ++++++++++---------
.../src/components/chat/SpaceInviteCard.tsx | 6 +++---
3 files changed, 14 insertions(+), 18 deletions(-)
diff --git a/packages/web/src/api/client.ts b/packages/web/src/api/client.ts
index db5701a9..dd651824 100644
--- a/packages/web/src/api/client.ts
+++ b/packages/web/src/api/client.ts
@@ -813,9 +813,3 @@ export function createApiClient(origin: string, getToken: () => string | null, o
return new BackspaceApiClient(baseUrl, getToken, onUnauthorized);
}
-// Re-export the cross-store origin resolver so consumers can do
-// `import { getApiForOrigin } from '../api/client'`. The real implementation
-// lives in `utils/crossStoreResolvers` to avoid TDZ cycles between stores;
-// re-exporting here keeps the public import surface clean for callers that
-// don't need to know about the internal indirection.
-export { getApiForOrigin } from '../utils/crossStoreResolvers';
diff --git a/packages/web/src/components/chat/SpaceInviteCard.test.tsx b/packages/web/src/components/chat/SpaceInviteCard.test.tsx
index 014869f3..7ca65b0a 100644
--- a/packages/web/src/components/chat/SpaceInviteCard.test.tsx
+++ b/packages/web/src/components/chat/SpaceInviteCard.test.tsx
@@ -3,17 +3,19 @@ import { render, screen, waitFor } from '@testing-library/react';
import { MemoryRouter } from 'react-router-dom';
import { SpaceInviteCard } from './SpaceInviteCard';
-const mockJoinByCode = vi.fn();
+const { mockJoinByCode, mockGetApiForOrigin } = vi.hoisted(() => ({
+ mockJoinByCode: vi.fn(),
+ mockGetApiForOrigin: vi.fn(() => ({
+ spaces: { invitePreview: vi.fn() },
+ })),
+}));
vi.mock('../../stores/spaceStore', () => ({
useSpaceStore: (selector: any) => selector({ joinByCode: mockJoinByCode }),
+ getApiForOrigin: mockGetApiForOrigin,
}));
vi.mock('../../api/client', () => ({
createApiClient: vi.fn(),
- getApiForOrigin: vi.fn(() => ({
- spaces: { invitePreview:vi.fn() },
- })),
}));
-import { getApiForOrigin } from '../../api/client';
const basePayload = {
event: 'space_invite' as const,
@@ -38,7 +40,7 @@ describe('SpaceInviteCard', () => {
});
it('renders snapshot fields immediately on mount (snapshot-only state)', () => {
- (getApiForOrigin as any).mockReturnValue({
+ mockGetApiForOrigin.mockReturnValue({
spaces: { invitePreview:() => new Promise(() => {}) }, // never resolves
});
render(