This is an automated email from the ASF dual-hosted git repository.
pierrejeambrun pushed a commit to branch v3-1-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/v3-1-test by this push:
new 71d2eed9526 feat: added toasters for permission denied (#57966)
(#58016) (#60646)
71d2eed9526 is described below
commit 71d2eed9526e5f8c2ffeb4e0624d840d7d9108eb
Author: Pierre Jeambrun <[email protected]>
AuthorDate: Fri Jan 16 17:50:38 2026 +0100
feat: added toasters for permission denied (#57966) (#58016) (#60646)
* feat: add http error validation and toasters for permission denied
* disable trigger dag button if the useTrigger hook returns an error
* fix lint
* ci: ran prek hooks
* ci: fix linting
* fix toaster error handling. added toaster error translations json
* removed error util. refactored to use generic error
* remove deleted utility import
* remove generic from triggerDag.toaster.error translation
(cherry picked from commit ba7e2fb4685474afb131a517836e0c7bfd956253)
Co-authored-by: Aaron Wolmutt
<[email protected]>
---
.../src/airflow/ui/public/i18n/locales/en/components.json | 3 +++
.../airflow/ui/src/components/TriggerDag/TriggerDAGForm.tsx | 4 +++-
airflow-core/src/airflow/ui/src/queries/useTrigger.ts | 13 +++++++++++--
3 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/en/components.json
b/airflow-core/src/airflow/ui/public/i18n/locales/en/components.json
index 8f33455cd87..8da7c649299 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/en/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/en/components.json
@@ -115,6 +115,9 @@
"selectLabel": "Single Run",
"title": "Trigger Dag",
"toaster": {
+ "error": {
+ "title": "Failed to Trigger DAG"
+ },
"success": {
"description": "Dag run has been successfully triggered.",
"title": "Dag Run Triggered"
diff --git
a/airflow-core/src/airflow/ui/src/components/TriggerDag/TriggerDAGForm.tsx
b/airflow-core/src/airflow/ui/src/components/TriggerDag/TriggerDAGForm.tsx
index 8c92730714d..8cb19ca118b 100644
--- a/airflow-core/src/airflow/ui/src/components/TriggerDag/TriggerDAGForm.tsx
+++ b/airflow-core/src/airflow/ui/src/components/TriggerDag/TriggerDAGForm.tsx
@@ -167,7 +167,9 @@ const TriggerDAGForm = ({ dagDisplayName, dagId, isPaused,
onClose, open }: Trig
<Spacer />
<Button
colorPalette="brand"
- disabled={Boolean(errors.conf) || Boolean(errors.date) ||
formError || isPending}
+ disabled={
+ Boolean(errors.conf) || Boolean(errors.date) || formError ||
isPending || Boolean(errorTrigger)
+ }
onClick={() => void handleSubmit(onSubmit)()}
>
<FiPlay /> {translate("components:triggerDag.button")}
diff --git a/airflow-core/src/airflow/ui/src/queries/useTrigger.ts
b/airflow-core/src/airflow/ui/src/queries/useTrigger.ts
index ee6fae94909..b0dae529c4f 100644
--- a/airflow-core/src/airflow/ui/src/queries/useTrigger.ts
+++ b/airflow-core/src/airflow/ui/src/queries/useTrigger.ts
@@ -62,7 +62,12 @@ export const useTrigger = ({ dagId, onSuccessConfirm }: {
dagId: string; onSucce
}
};
- const onError = (_error: unknown) => {
+ const onError = (_error: Error) => {
+ toaster.create({
+ description: _error.message,
+ title: translate("triggerDag.toaster.error.title"),
+ type: "error",
+ });
setError(_error);
};
@@ -93,5 +98,9 @@ export const useTrigger = ({ dagId, onSuccessConfirm }: {
dagId: string; onSucce
});
};
- return { error, isPending, triggerDagRun };
+ return {
+ error,
+ isPending,
+ triggerDagRun,
+ };
};