diff --git a/src/lib/components/workflow-actions.svelte b/src/lib/components/workflow-actions.svelte
index 9350edcd5..017fbec77 100644
--- a/src/lib/components/workflow-actions.svelte
+++ b/src/lib/components/workflow-actions.svelte
@@ -12,14 +12,12 @@
import { translate } from '$lib/i18n/translate';
import { coreUserStore } from '$lib/stores/core-user';
import { resetEvents } from '$lib/stores/events';
- import { settings } from '$lib/stores/settings';
import { refresh } from '$lib/stores/workflow-run';
import type { WorkflowExecution } from '$lib/types/workflows';
import { workflowCancelEnabled } from '$lib/utilities/workflow-cancel-enabled';
import { workflowResetEnabled } from '$lib/utilities/workflow-reset-enabled';
import { workflowSignalEnabled } from '$lib/utilities/workflow-signal-enabled';
import { workflowTerminateEnabled } from '$lib/utilities/workflow-terminate-enabled';
- import { writeActionsAreAllowed } from '$lib/utilities/write-actions-are-allowed';
export let workflow: WorkflowExecution;
export let namespace: string;
@@ -31,28 +29,55 @@
let resetConfirmationModalOpen = false;
let signalConfirmationModalOpen = false;
let resetTooltipText: string;
+ let coreUser = coreUserStore();
+
+ $: cancelEnabled = workflowCancelEnabled(
+ $page.data.settings,
+ $coreUser,
+ namespace,
+ );
+
+ $: signalEnabled = workflowSignalEnabled(
+ $page.data.settings,
+ $coreUser,
+ namespace,
+ );
+
+ $: terminateEnabled = workflowTerminateEnabled(
+ $page.data.settings,
+ $coreUser,
+ namespace,
+ );
+
+ $: resetAuthorized = workflowResetEnabled(
+ $page.data.settings,
+ $coreUser,
+ namespace,
+ );
- $: cancelEnabled = workflowCancelEnabled($page.data.settings);
- $: signalEnabled = workflowSignalEnabled($page.data.settings);
- $: terminateEnabled = workflowTerminateEnabled($page.data.settings);
- $: resetEnabled = workflowResetEnabled($page.data.settings);
+ $: resetEnabled =
+ resetAuthorized &&
+ workflow.pendingChildren.length === 0 &&
+ $resetEvents.length > 0;
+
+ $: actionsDisabled = !resetEnabled && !signalEnabled && !terminateEnabled;
let workflowActions: {
label: string;
onClick: () => void;
- allowed: boolean;
+ enabled: boolean;
testId: string;
destructive?: boolean;
tooltip?: string;
}[];
$: {
- if (!resetEnabled) {
- resetTooltipText = translate('workflows.reset-disabled');
- } else if (resetEnabled && workflow?.pendingChildren?.length > 0) {
+ if (!resetAuthorized) {
+ resetTooltipText = translate('workflows.reset-disabled-unauthorized');
+ } else if (resetAuthorized && workflow?.pendingChildren?.length > 0) {
resetTooltipText = translate('workflows.reset-disabled-pending-children');
} else if (
- resetEnabled &&
+ resetAuthorized &&
workflow?.pendingChildren?.length === 0 &&
$resetEvents.length === 0
) {
@@ -65,39 +90,27 @@
label: translate('workflows.reset'),
onClick: () => (resetConfirmationModalOpen = true),
testId: 'reset-button',
- allowed: resetAllowed,
- tooltip: resetAllowed ? '' : resetTooltipText,
+ enabled: resetEnabled,
+ tooltip: resetEnabled ? '' : resetTooltipText,
},
{
label: translate('workflows.signal'),
onClick: () => (signalConfirmationModalOpen = true),
testId: 'signal-button',
- allowed: signalEnabled,
+ enabled: signalEnabled,
tooltip: signalEnabled ? '' : translate('workflows.signal-disabled'),
},
{
label: translate('workflows.terminate'),
onClick: () => (terminateConfirmationModalOpen = true),
testId: 'terminate-button',
- allowed: terminateEnabled,
+ enabled: terminateEnabled,
destructive: true,
tooltip: terminateEnabled
? ''
: translate('workflows.terminate-disabled'),
},
];
-
- let coreUser = coreUserStore();
-
- $: actionsDisabled =
- $coreUser.namespaceWriteDisabled(namespace) ||
- !writeActionsAreAllowed(settings);
-
- $: resetAllowed =
- resetEnabled &&
- workflow?.pendingChildren?.length === 0 &&
- $resetEvents.length > 0 &&
- !actionsDisabled;
{#if isRunning}
@@ -110,7 +123,7 @@
label={translate('workflows.request-cancellation')}
menuLabel={translate('workflows.workflow-actions')}
>
- {#each workflowActions as { onClick, destructive, label, allowed, testId, tooltip }}
+ {#each workflowActions as { onClick, destructive, label, enabled, testId, tooltip }}
{#if destructive}
{/if}
@@ -118,7 +131,7 @@