Skip to content

Commit a35d9d3

Browse files
committed
feat: add presence checks for associated deals and datasets in Deals and Tasks routes
1 parent 8f547a5 commit a35d9d3

File tree

2 files changed

+55
-0
lines changed

2 files changed

+55
-0
lines changed

src/routes/$chainSlug/_layout/deal/$dealId.tsx

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { DealAssociatedDealsTable } from '@/modules/deals/deal/DealAssociatedDea
1414
import { DealBreadcrumbs } from '@/modules/deals/deal/DealBreadcrumbs';
1515
import { DealTasksTable } from '@/modules/deals/deal/DealTasksTable';
1616
import { buildDealDetails } from '@/modules/deals/deal/buildDealDetails';
17+
import { dealAssociatedDealsQuery } from '@/modules/deals/deal/dealAssociatedDealsQuery';
1718
import { dealQuery } from '@/modules/deals/deal/dealQuery';
1819
import { SearcherBar } from '@/modules/search/SearcherBar';
1920
import useUserStore from '@/stores/useUser.store';
@@ -91,6 +92,28 @@ function DealsRoute() {
9192
return <ErrorAlert className="my-16" message="Deal not found." />;
9293
}
9394

95+
const associatedDealsPresenceQueryKey = [
96+
chainId,
97+
'deal',
98+
'associatedDealsPresence',
99+
dealId,
100+
];
101+
const { data: associatedDealsPresence } = useQuery({
102+
queryKey: associatedDealsPresenceQueryKey,
103+
enabled: dealId && !!chainId && !!deal && currentTab !== 2,
104+
queryFn: () =>
105+
execute(dealAssociatedDealsQuery, chainId!, {
106+
length: 1,
107+
skip: 0,
108+
nextSkip: 1,
109+
nextNextSkip: 2,
110+
dealId: dealId,
111+
}),
112+
placeholderData: (prev) => prev,
113+
});
114+
const hasAssociatedDeals =
115+
(associatedDealsPresence?.deal?.requestorder?.deals?.length || 0) > 0;
116+
94117
const showOutdated = deal && (isError || isOutdatedChild);
95118
const showLoading = isLoading || isRefetching || isLoadingChild;
96119

@@ -120,6 +143,10 @@ function DealsRoute() {
120143
currentTab={currentTab}
121144
tabLabels={tabLabels}
122145
onTabChange={setCurrentTab}
146+
disabledTabs={deal && !hasAssociatedDeals ? [2] : []}
147+
disabledReasons={
148+
deal && !hasAssociatedDeals ? { 2: 'No associated deals' } : {}
149+
}
123150
/>
124151
<div>
125152
{currentTab === 0 &&

src/routes/$chainSlug/_layout/task/$taskId.tsx

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { TaskBreadcrumbs } from '@/modules/tasks/task/TaskBreadcrumbs';
1515
import { TaskDatasetsTable } from '@/modules/tasks/task/TaskDatasetsTable';
1616
import { TaskRawData } from '@/modules/tasks/task/TaskRawData';
1717
import { buildTaskDetails } from '@/modules/tasks/task/buildTaskDetails';
18+
import { taskDatasetsQuery } from '@/modules/tasks/task/taskDatasetsQuery';
1819
import { taskQuery } from '@/modules/tasks/task/taskQuery';
1920
import useUserStore from '@/stores/useUser.store';
2021
import { NotFoundError } from '@/utils/NotFoundError';
@@ -85,6 +86,29 @@ function TasksRoute() {
8586
return <ErrorAlert message="Task not found." />;
8687
}
8788

89+
// Presence check for datasets to disable tab if none
90+
const datasetsPresenceQueryKey = [
91+
chainId,
92+
'task',
93+
'datasetsPresence',
94+
taskId,
95+
];
96+
const { data: datasetsPresence } = useQuery({
97+
queryKey: datasetsPresenceQueryKey,
98+
enabled: !!chainId && !!task && currentTab !== 2,
99+
queryFn: () =>
100+
execute(taskDatasetsQuery, chainId!, {
101+
taskId: (taskId as string).toLowerCase(),
102+
length: 1,
103+
skip: 0,
104+
nextSkip: 1,
105+
nextNextSkip: 2,
106+
}),
107+
placeholderData: (prev) => prev,
108+
});
109+
const hasDatasets =
110+
(datasetsPresence?.task?.bulkSlice?.datasets?.length || 0) > 0;
111+
88112
const showOutdated = task && (isError || isOutdatedChild);
89113
const showLoading = isLoading || isRefetching || isLoadingChild;
90114

@@ -114,6 +138,10 @@ function TasksRoute() {
114138
currentTab={currentTab}
115139
tabLabels={tabLabels}
116140
onTabChange={setCurrentTab}
141+
disabledTabs={task && !hasDatasets ? [2] : []}
142+
disabledReasons={
143+
task && !hasDatasets ? { 2: 'No datasets for this task' } : {}
144+
}
117145
/>
118146
<div>
119147
{currentTab === 0 &&

0 commit comments

Comments
 (0)