Skip to content

Commit 70a7e5b

Browse files
waleedlatif1claude
andcommitted
refactor(data-drains): tighten query keys and small UI cleanups
Add runsList factory to avoid bypassing the query-key factory, drop keepPreviousData on the near-static drains list, invalidate the drain detail on run-now/delete, remove the orphaned detail/runs caches on delete, add an aria-label on the row actions trigger, and use cn() for the conditional run-status class. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
1 parent a56a100 commit 70a7e5b

2 files changed

Lines changed: 9 additions & 5 deletions

File tree

apps/sim/ee/data-drains/components/data-drains-settings.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import {
3333
import type { CreateDataDrainBody, DataDrain, DataDrainRun } from '@/lib/api/contracts/data-drains'
3434
import { useSession } from '@/lib/auth/auth-client'
3535
import { CADENCE_TYPES, DESTINATION_TYPES, SOURCE_TYPES } from '@/lib/data-drains/types'
36+
import { cn } from '@/lib/utils'
3637
import { getUserRole } from '@/lib/workspaces/organization/utils'
3738
import { DataDrainsSkeleton } from '@/ee/data-drains/components/data-drains-skeleton'
3839
import { DESTINATION_FORM_REGISTRY } from '@/ee/data-drains/destinations/registry'
@@ -251,7 +252,7 @@ function DrainRow({ drain, organizationId, expanded, onToggleExpand }: DrainRowP
251252
<TableCell onClick={(e) => e.stopPropagation()}>
252253
<DropdownMenu>
253254
<DropdownMenuTrigger asChild>
254-
<Button variant='ghost' size='sm'>
255+
<Button variant='ghost' size='sm' aria-label='Drain actions'>
255256
<MoreHorizontal className='h-4 w-4' />
256257
</Button>
257258
</DropdownMenuTrigger>
@@ -314,7 +315,7 @@ function RunRow({ run }: { run: DataDrainRun }) {
314315
<div className='flex items-start justify-between gap-4 rounded border border-[var(--border)] px-3 py-2 text-[12px]'>
315316
<div className='flex flex-col gap-0.5'>
316317
<div className='flex items-center gap-2'>
317-
<span className={`font-medium ${statusColor}`}>{run.status}</span>
318+
<span className={cn('font-medium', statusColor)}>{run.status}</span>
318319
<span className='text-[var(--text-muted)]'>{run.trigger}</span>
319320
<span className='text-[var(--text-muted)]'>
320321
{new Date(run.startedAt).toLocaleString()}

apps/sim/ee/data-drains/hooks/data-drains.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ export const dataDrainKeys = {
2525
detail: (drainId?: string) => [...dataDrainKeys.details(), drainId ?? ''] as const,
2626
runsAll: () => [...dataDrainKeys.all, 'runs'] as const,
2727
runs: (drainId?: string) => [...dataDrainKeys.runsAll(), drainId ?? ''] as const,
28+
runsList: (drainId?: string, limit?: number) =>
29+
[...dataDrainKeys.runs(drainId), limit ?? 10] as const,
2830
}
2931

3032
async function fetchDataDrains(organizationId: string, signal?: AbortSignal): Promise<DataDrain[]> {
@@ -55,13 +57,12 @@ export function useDataDrains(organizationId?: string) {
5557
queryFn: ({ signal }) => fetchDataDrains(organizationId as string, signal),
5658
enabled: Boolean(organizationId),
5759
staleTime: 60 * 1000,
58-
placeholderData: keepPreviousData,
5960
})
6061
}
6162

6263
export function useDataDrainRuns(organizationId?: string, drainId?: string, limit = 10) {
6364
return useQuery<DataDrainRun[]>({
64-
queryKey: [...dataDrainKeys.runs(drainId), limit] as const,
65+
queryKey: dataDrainKeys.runsList(drainId, limit),
6566
queryFn: ({ signal }) =>
6667
fetchDataDrainRuns(organizationId as string, drainId as string, limit, signal),
6768
enabled: Boolean(organizationId && drainId),
@@ -132,7 +133,8 @@ export function useDeleteDataDrain() {
132133
},
133134
onSuccess: (_data, variables) => {
134135
queryClient.invalidateQueries({ queryKey: dataDrainKeys.list(variables.organizationId) })
135-
queryClient.invalidateQueries({ queryKey: dataDrainKeys.detail(variables.drainId) })
136+
queryClient.removeQueries({ queryKey: dataDrainKeys.detail(variables.drainId) })
137+
queryClient.removeQueries({ queryKey: dataDrainKeys.runs(variables.drainId) })
136138
},
137139
})
138140
}
@@ -154,6 +156,7 @@ export function useRunDataDrainNow() {
154156
},
155157
onSuccess: (_data, variables) => {
156158
queryClient.invalidateQueries({ queryKey: dataDrainKeys.runs(variables.drainId) })
159+
queryClient.invalidateQueries({ queryKey: dataDrainKeys.detail(variables.drainId) })
157160
queryClient.invalidateQueries({ queryKey: dataDrainKeys.list(variables.organizationId) })
158161
},
159162
})

0 commit comments

Comments
 (0)