This is an automated email from the ASF dual-hosted git repository. kaxilnaik pushed a commit to branch v3-1-test in repository https://gitbox.apache.org/repos/asf/airflow.git
commit f6377f66954c50e926163f2b41651fb0ea2f45a9 Author: Pierre Jeambrun <[email protected]> AuthorDate: Mon Sep 15 15:32:54 2025 -0600 Front end for hitl endpoint update (#55674) Follow up of https://github.com/apache/airflow/pull/55603. Only the last commit is relevant. Tested locally all seems good. (cherry picked from commit c14c18e5ae9f1bdb065c90b585bc2f3c14460574) --- .../src/airflow/ui/src/components/NeedsReviewButton.tsx | 8 ++++---- .../src/airflow/ui/src/hooks/useRequiredActionTabs.ts | 6 +++--- .../src/pages/HITLTaskInstances/HITLTaskInstances.tsx | 8 ++++---- .../airflow/ui/src/pages/TaskInstance/HITLResponse.tsx | 17 ++++++++++------- .../src/airflow/ui/src/queries/useDeleteDagRun.ts | 4 ++-- .../src/airflow/ui/src/queries/useDeleteTaskInstance.ts | 4 ++-- .../src/airflow/ui/src/queries/useUpdateHITLDetail.ts | 14 +++++++------- 7 files changed, 32 insertions(+), 29 deletions(-) diff --git a/airflow-core/src/airflow/ui/src/components/NeedsReviewButton.tsx b/airflow-core/src/airflow/ui/src/components/NeedsReviewButton.tsx index fcec3a8fe1d..6ceb54a3d05 100644 --- a/airflow-core/src/airflow/ui/src/components/NeedsReviewButton.tsx +++ b/airflow-core/src/airflow/ui/src/components/NeedsReviewButton.tsx @@ -20,7 +20,7 @@ import { Box } from "@chakra-ui/react"; import { useTranslation } from "react-i18next"; import { LuUserRoundPen } from "react-icons/lu"; -import { useHumanInTheLoopServiceGetHitlDetails } from "openapi/queries"; +import { useTaskInstanceServiceGetHitlDetails } from "openapi/queries"; import { useAutoRefresh } from "src/utils/query"; import { StatsCard } from "./StatsCard"; @@ -37,10 +37,10 @@ export const NeedsReviewButton = ({ readonly taskId?: string; }) => { const hookAutoRefresh = useAutoRefresh({ dagId }); - const { data: hitlStatsData, isLoading } = useHumanInTheLoopServiceGetHitlDetails( + const { data: hitlStatsData, isLoading } = useTaskInstanceServiceGetHitlDetails( { - dagId, - dagRunId: runId, + dagId: dagId ?? "~", + dagRunId: runId ?? "~", responseReceived: false, state: ["deferred"], taskId, diff --git a/airflow-core/src/airflow/ui/src/hooks/useRequiredActionTabs.ts b/airflow-core/src/airflow/ui/src/hooks/useRequiredActionTabs.ts index ddef7c64b08..c187f7b2415 100644 --- a/airflow-core/src/airflow/ui/src/hooks/useRequiredActionTabs.ts +++ b/airflow-core/src/airflow/ui/src/hooks/useRequiredActionTabs.ts @@ -20,7 +20,7 @@ import { useEffect } from "react"; import { useTranslation } from "react-i18next"; import { useLocation, useNavigate } from "react-router-dom"; -import { useHumanInTheLoopServiceGetHitlDetails } from "openapi/queries"; +import { useTaskInstanceServiceGetHitlDetails } from "openapi/queries"; export type HITLQueryParams = { dagId: string; @@ -70,10 +70,10 @@ export const useRequiredActionTabs = ( return location.pathname.replace("/required_actions", ""); })(); - const { data: hitlData, isLoading: isLoadingHitl } = useHumanInTheLoopServiceGetHitlDetails( + const { data: hitlData, isLoading: isLoadingHitl } = useTaskInstanceServiceGetHitlDetails( { dagId: hitlParams.dagId, - dagRunId: hitlParams.dagRunId, + dagRunId: hitlParams.dagRunId ?? "~", taskId: hitlParams.taskId, taskIdPattern: hitlParams.taskIdPattern, }, diff --git a/airflow-core/src/airflow/ui/src/pages/HITLTaskInstances/HITLTaskInstances.tsx b/airflow-core/src/airflow/ui/src/pages/HITLTaskInstances/HITLTaskInstances.tsx index 29e762ee636..65fb4a33db9 100644 --- a/airflow-core/src/airflow/ui/src/pages/HITLTaskInstances/HITLTaskInstances.tsx +++ b/airflow-core/src/airflow/ui/src/pages/HITLTaskInstances/HITLTaskInstances.tsx @@ -23,7 +23,7 @@ import { useCallback } from "react"; import { useTranslation } from "react-i18next"; import { Link as RouterLink, useParams, useSearchParams } from "react-router-dom"; -import { useHumanInTheLoopServiceGetHitlDetails } from "openapi/queries"; +import { useTaskInstanceServiceGetHitlDetails } from "openapi/queries"; import type { HITLDetail } from "openapi/requests/types.gen"; import { DataTable } from "src/components/DataTable"; import { useTableURLState } from "src/components/DataTable/useTableUrlState"; @@ -122,9 +122,9 @@ export const HITLTaskInstances = () => { const [sort] = sorting; const responseReceived = searchParams.get(RESPONSE_RECEIVED_PARAM); - const { data, error, isLoading } = useHumanInTheLoopServiceGetHitlDetails({ - dagId, - dagRunId: runId, + const { data, error, isLoading } = useTaskInstanceServiceGetHitlDetails({ + dagId: dagId ?? "~", + dagRunId: runId ?? "~", limit: pagination.pageSize, offset: pagination.pageIndex * pagination.pageSize, orderBy: sort ? [`${sort.desc ? "-" : ""}${sort.id}`] : [], diff --git a/airflow-core/src/airflow/ui/src/pages/TaskInstance/HITLResponse.tsx b/airflow-core/src/airflow/ui/src/pages/TaskInstance/HITLResponse.tsx index 95e52b145a2..11072fe862e 100644 --- a/airflow-core/src/airflow/ui/src/pages/TaskInstance/HITLResponse.tsx +++ b/airflow-core/src/airflow/ui/src/pages/TaskInstance/HITLResponse.tsx @@ -19,7 +19,7 @@ import { Box } from "@chakra-ui/react"; import { useParams } from "react-router-dom"; -import { useHumanInTheLoopServiceGetHitlDetail } from "openapi/queries"; +import { useTaskInstanceServiceGetHitlDetail } from "openapi/queries"; import { ProgressBar } from "src/components/ui"; import { HITLResponseForm } from "../HITLTaskInstances/HITLResponseForm"; @@ -27,12 +27,15 @@ import { HITLResponseForm } from "../HITLTaskInstances/HITLResponseForm"; export const HITLResponse = () => { const { dagId, mapIndex, runId, taskId } = useParams(); - const { data: hitlDetail } = useHumanInTheLoopServiceGetHitlDetail({ - dagId: dagId ?? "~", - dagRunId: runId ?? "~", - mapIndex: Number(mapIndex ?? -1), - taskId: taskId ?? "~", - }); + const { data: hitlDetail } = useTaskInstanceServiceGetHitlDetail( + { + dagId: dagId ?? "", + dagRunId: runId ?? "", + mapIndex: Number(mapIndex ?? -1), + taskId: taskId ?? "", + }, + undefined, + ); if (!hitlDetail?.task_instance) { return ( diff --git a/airflow-core/src/airflow/ui/src/queries/useDeleteDagRun.ts b/airflow-core/src/airflow/ui/src/queries/useDeleteDagRun.ts index 9535d31ae48..c5c75320551 100644 --- a/airflow-core/src/airflow/ui/src/queries/useDeleteDagRun.ts +++ b/airflow-core/src/airflow/ui/src/queries/useDeleteDagRun.ts @@ -24,7 +24,7 @@ import { useDagRunServiceGetDagRunsKey, UseDagRunServiceGetDagRunKeyFn, useTaskInstanceServiceGetTaskInstancesKey, - useHumanInTheLoopServiceGetHitlDetailsKey, + useTaskInstanceServiceGetHitlDetailsKey, } from "openapi/queries"; import { toaster } from "src/components/ui"; @@ -51,7 +51,7 @@ export const useDeleteDagRun = ({ dagId, dagRunId, onSuccessConfirm }: DeleteDag UseDagRunServiceGetDagRunKeyFn({ dagId, dagRunId }), [useDagRunServiceGetDagRunsKey], [useTaskInstanceServiceGetTaskInstancesKey], - [useHumanInTheLoopServiceGetHitlDetailsKey], + [useTaskInstanceServiceGetHitlDetailsKey], ]; await Promise.all(queryKeys.map((key) => queryClient.invalidateQueries({ queryKey: key }))); diff --git a/airflow-core/src/airflow/ui/src/queries/useDeleteTaskInstance.ts b/airflow-core/src/airflow/ui/src/queries/useDeleteTaskInstance.ts index 1ea27d22186..545168280e1 100644 --- a/airflow-core/src/airflow/ui/src/queries/useDeleteTaskInstance.ts +++ b/airflow-core/src/airflow/ui/src/queries/useDeleteTaskInstance.ts @@ -26,7 +26,7 @@ import { useDagRunServiceGetDagRunsKey, UseDagRunServiceGetDagRunKeyFn, UseGridServiceGetGridTiSummariesKeyFn, - useHumanInTheLoopServiceGetHitlDetailsKey, + useTaskInstanceServiceGetHitlDetailsKey, } from "openapi/queries"; import { toaster } from "src/components/ui"; @@ -63,7 +63,7 @@ export const useDeleteTaskInstance = ({ [useDagRunServiceGetDagRunsKey], [useTaskInstanceServiceGetTaskInstancesKey], [useTaskInstanceServiceGetTaskInstanceKey, { dagId, dagRunId, mapIndex, taskId }], - [useHumanInTheLoopServiceGetHitlDetailsKey], + [useTaskInstanceServiceGetHitlDetailsKey], ]; await Promise.all(queryKeys.map((key) => queryClient.invalidateQueries({ queryKey: key }))); diff --git a/airflow-core/src/airflow/ui/src/queries/useUpdateHITLDetail.ts b/airflow-core/src/airflow/ui/src/queries/useUpdateHITLDetail.ts index 03d3246cc6b..f9dca74b281 100644 --- a/airflow-core/src/airflow/ui/src/queries/useUpdateHITLDetail.ts +++ b/airflow-core/src/airflow/ui/src/queries/useUpdateHITLDetail.ts @@ -23,9 +23,9 @@ import { useTranslation } from "react-i18next"; import { UseDagRunServiceGetDagRunKeyFn, useDagRunServiceGetDagRunsKey, - useHumanInTheLoopServiceGetHitlDetailsKey, - useHumanInTheLoopServiceGetHitlDetailKey, - useHumanInTheLoopServiceUpdateHitlDetail, + useTaskInstanceServiceGetHitlDetailsKey, + useTaskInstanceServiceGetHitlDetailKey, + useTaskInstanceServiceUpdateHitlDetail, useTaskInstanceServiceGetTaskInstanceKey, useTaskInstanceServiceGetTaskInstancesKey, } from "openapi/queries"; @@ -52,8 +52,8 @@ export const useUpdateHITLDetail = ({ [useDagRunServiceGetDagRunsKey], [useTaskInstanceServiceGetTaskInstancesKey, { dagId, dagRunId }], [useTaskInstanceServiceGetTaskInstanceKey, { dagId, dagRunId, mapIndex, taskId }], - [useHumanInTheLoopServiceGetHitlDetailsKey, { dagIdPattern: dagId, dagRunId }], - [useHumanInTheLoopServiceGetHitlDetailKey, { dagId, dagRunId }], + [useTaskInstanceServiceGetHitlDetailsKey, { dagIdPattern: dagId, dagRunId }], + [useTaskInstanceServiceGetHitlDetailKey, { dagId, dagRunId }], ]; await Promise.all(queryKeys.map((key) => queryClient.invalidateQueries({ queryKey: key }))); @@ -72,7 +72,7 @@ export const useUpdateHITLDetail = ({ }); }; - const { isPending, mutate } = useHumanInTheLoopServiceUpdateHitlDetail({ + const { isPending, mutate } = useTaskInstanceServiceUpdateHitlDetail({ onError, onSuccess, }); @@ -82,7 +82,7 @@ export const useUpdateHITLDetail = ({ mutate({ dagId, dagRunId, - mapIndex, + mapIndex: mapIndex ?? -1, requestBody: { chosen_options: updateHITLResponseRequestBody.chosen_options ?? [], params_input: updateHITLResponseRequestBody.params_input ?? {},
