Skip to content

Commit 64a4652

Browse files
committed
fix(project-files): gate pending mention hydration
1 parent 8dc7054 commit 64a4652

2 files changed

Lines changed: 20 additions & 1 deletion

File tree

‎apps/sim/app/workspace/[workspaceId]/home/components/user-input/components/plus-menu-dropdown/plus-menu-dropdown.test.tsx‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/** @vitest-environment jsdom */
22
import { act, createRef } from 'react'
3+
import { createDeferred } from '@sim/testing/helpers/deferred'
34
import { integrationMatcherMock } from '@sim/testing/mocks/integration-matcher.mock'
45
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
56
import { createRoot, type Root } from 'react-dom/client'
@@ -121,3 +122,19 @@ it('stops Project tagging through the browse submenu when Project files are disa
121122
await selectProject()
122123
expect(selected).toBeNull()
123124
})
125+
126+
it('only waits for pending Projects when Project mentions are selectable', async () => {
127+
const response = createDeferred<Response>()
128+
vi.stubGlobal('fetch', (input: string) =>
129+
input.startsWith('/api/projects?') ? response.promise : Promise.resolve(Response.json({}))
130+
)
131+
try {
132+
await render(true)
133+
await act(async () => handle.current?.open({ left: 0, top: 0 }, { mention: true }))
134+
expect(handle.current?.selectActive()).toBe('hydrating')
135+
await render(false)
136+
expect(handle.current?.selectActive()).toBe('empty')
137+
} finally {
138+
await act(async () => response.resolve(Response.json({ projects: [], nextCursor: null })))
139+
}
140+
})

‎apps/sim/app/workspace/[workspaceId]/home/components/user-input/components/plus-menu-dropdown/plus-menu-dropdown.tsx‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,9 @@ export const PlusMenuDropdown = React.memo(
207207
: combined.groups
208208
const isHydrating =
209209
combined.isHydrating ||
210-
Boolean(organizationId && (workspacesPending || (projectsEnabled && projectQuery.isPending)))
210+
Boolean(
211+
organizationId && (workspacesPending || (projectSelectionEnabled && projectQuery.isPending))
212+
)
211213

212214
const doOpen = useCallback(
213215
(anchor: { left: number; top: number }, options?: { mention?: boolean }) => {

0 commit comments

Comments
 (0)