From 4002f1eab04b570dd2550cf8dc16279ea9691309 Mon Sep 17 00:00:00 2001 From: Jay Masiwal Date: Fri, 6 Mar 2026 22:17:35 +0000 Subject: [PATCH 1/3] fix(ui): show permission error when triggering DAG without permission --- .../ui/public/i18n/locales/ar/components.json | 1 + .../airflow/ui/src/i18n/en/components.json | 0 .../src/airflow/ui/src/queries/useTrigger.ts | 29 ++++++++++++++----- 3 files changed, 22 insertions(+), 8 deletions(-) create mode 100644 airflow-core/src/airflow/ui/src/i18n/en/components.json diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ar/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/ar/components.json index 11aa3dbd783da..4c96f2aa9bfbb 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/ar/components.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/ar/components.json @@ -168,6 +168,7 @@ "intervalStart": "البداية", "loading": "جارٍ تحميل معلومات Dag...", "loadingFailed": "فشل تحميل معلومات Dag. يرجى المحاولة مرة أخرى.", + "permissionDenied": "You do not have permission to trigger this DAG.", "runIdHelp": "اختياري - سيتم توليده تلقائيًا إذا لم يتم توفيره.", "selectDescription": "تشغيل عملية واحدة من هذا Dag", "selectLabel": "تشغيلة واحدة", diff --git a/airflow-core/src/airflow/ui/src/i18n/en/components.json b/airflow-core/src/airflow/ui/src/i18n/en/components.json new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/airflow-core/src/airflow/ui/src/queries/useTrigger.ts b/airflow-core/src/airflow/ui/src/queries/useTrigger.ts index 8d1b24afb52c5..f1030bfd521a9 100644 --- a/airflow-core/src/airflow/ui/src/queries/useTrigger.ts +++ b/airflow-core/src/airflow/ui/src/queries/useTrigger.ts @@ -62,15 +62,28 @@ export const useTrigger = ({ dagId, onSuccessConfirm }: { dagId: string; onSucce } }; - const onError = (_error: Error) => { - toaster.create({ - description: _error.message, - title: translate("triggerDag.toaster.error.title"), - type: "error", - }); - setError(_error); - }; + const onError = (err: unknown) => { + let message = "Unknown error"; + + if (err instanceof Error) { + const { message: errMessage } = err; + message = errMessage; +} +if (typeof err === "object" && err !== null && "response" in err) { + const { response } = err as { response?: { status?: number } }; + + if (response?.status === 403) { + message = translate("triggerDag.permissionDenied"); + } +} + toaster.create({ + description: message, + title: translate("triggerDag.toaster.error.title"), + type: "error", + }); + setError(err); +}; const { isPending, mutate } = useDagRunServiceTriggerDagRun({ onError, onSuccess, From 3d1f916602b5bbc397a2833bd5c5e151e6e89157 Mon Sep 17 00:00:00 2001 From: Jay Masiwal Date: Sat, 7 Mar 2026 18:56:16 +0000 Subject: [PATCH 2/3] fix(ui): remove incorrect locale changes --- .../src/airflow/ui/public/i18n/locales/ar/components.json | 1 - airflow-core/src/airflow/ui/src/i18n/en/components.json | 0 2 files changed, 1 deletion(-) delete mode 100644 airflow-core/src/airflow/ui/src/i18n/en/components.json diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ar/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/ar/components.json index 4c96f2aa9bfbb..11aa3dbd783da 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/ar/components.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/ar/components.json @@ -168,7 +168,6 @@ "intervalStart": "البداية", "loading": "جارٍ تحميل معلومات Dag...", "loadingFailed": "فشل تحميل معلومات Dag. يرجى المحاولة مرة أخرى.", - "permissionDenied": "You do not have permission to trigger this DAG.", "runIdHelp": "اختياري - سيتم توليده تلقائيًا إذا لم يتم توفيره.", "selectDescription": "تشغيل عملية واحدة من هذا Dag", "selectLabel": "تشغيلة واحدة", diff --git a/airflow-core/src/airflow/ui/src/i18n/en/components.json b/airflow-core/src/airflow/ui/src/i18n/en/components.json deleted file mode 100644 index e69de29bb2d1d..0000000000000 From 9e6fbf69626815acab271a3ce518d501b59b3d0c Mon Sep 17 00:00:00 2001 From: Jay Masiwal Date: Mon, 9 Mar 2026 16:44:22 +0000 Subject: [PATCH 3/3] fix(ui): apply prek formatting fixes --- .../src/airflow/ui/src/queries/useTrigger.ts | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/airflow-core/src/airflow/ui/src/queries/useTrigger.ts b/airflow-core/src/airflow/ui/src/queries/useTrigger.ts index f1030bfd521a9..634ffb4020fbb 100644 --- a/airflow-core/src/airflow/ui/src/queries/useTrigger.ts +++ b/airflow-core/src/airflow/ui/src/queries/useTrigger.ts @@ -62,28 +62,28 @@ export const useTrigger = ({ dagId, onSuccessConfirm }: { dagId: string; onSucce } }; - const onError = (err: unknown) => { - let message = "Unknown error"; - - if (err instanceof Error) { - const { message: errMessage } = err; - - message = errMessage; -} -if (typeof err === "object" && err !== null && "response" in err) { - const { response } = err as { response?: { status?: number } }; - - if (response?.status === 403) { - message = translate("triggerDag.permissionDenied"); - } -} - toaster.create({ - description: message, - title: translate("triggerDag.toaster.error.title"), - type: "error", - }); - setError(err); -}; + const onError = (err: unknown) => { + let message = "Unknown error"; + + if (err instanceof Error) { + const { message: errMessage } = err; + + message = errMessage; + } + if (typeof err === "object" && err !== null && "response" in err) { + const { response } = err as { response?: { status?: number } }; + + if (response?.status === 403) { + message = translate("triggerDag.permissionDenied"); + } + } + toaster.create({ + description: message, + title: translate("triggerDag.toaster.error.title"), + type: "error", + }); + setError(err); + }; const { isPending, mutate } = useDagRunServiceTriggerDagRun({ onError, onSuccess,