Skip to content

Commit 3996653

Browse files
Fix flow status toggle permission message (#2138)
<!-- Ensure the title clearly reflects what was changed. Provide a clear and concise description of the changes made. The PR should only contain the changes related to the issue, and no other unrelated changes. --> Fixes OPS-3914
1 parent 3c8f76d commit 3996653

2 files changed

Lines changed: 48 additions & 13 deletions

File tree

packages/react-ui/src/app/features/flows/components/flow-status-toggle.tsx

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {
44
Tooltip,
55
TooltipContent,
66
TooltipTrigger,
7+
usePermissionMessage,
78
} from '@openops/components/ui';
89
import {
910
Flow,
@@ -29,8 +30,10 @@ import {
2930
import { useAuthorization } from '@/app/common/hooks/authorization-hooks';
3031
import { blocksHooks } from '@/app/features/blocks/lib/blocks-hook';
3132
import { handleMutationError } from '@/app/interceptors/interceptor-utils';
32-
import { t } from 'i18next';
33-
import { getShortTriggerExplanation } from '../lib/flow-status-toggle-utils';
33+
import {
34+
getFlowStatusToggleTooltip,
35+
getShortTriggerExplanation,
36+
} from '../lib/flow-status-toggle-utils';
3437

3538
type FlowStatusToggleProps = {
3639
flow: Flow;
@@ -50,6 +53,7 @@ const FlowStatusToggle = ({
5053
const userHasPermissionToToggleFlowStatus = checkAccess(
5154
Permission.UPDATE_FLOW_STATUS,
5255
);
56+
const permissionMessage = usePermissionMessage();
5357

5458
useEffect(() => {
5559
setIsChecked(flow.status === FlowStatus.ENABLED);
@@ -128,17 +132,17 @@ const FlowStatusToggle = ({
128132
sideOffset={10}
129133
className="max-w-[300px] whitespace-normal"
130134
>
131-
{userHasPermissionToToggleFlowStatus
132-
? isNil(flow.publishedVersionId)
133-
? t('Please publish workflow first')
134-
: isFlowPublished
135-
? getShortTriggerExplanation(
136-
flowVersion.trigger,
137-
triggerMetadata,
138-
flow,
139-
)
140-
: t('Workflow is off. It only runs if manually triggered.')
141-
: t('Permission Needed')}
135+
{getFlowStatusToggleTooltip({
136+
userHasPermission: userHasPermissionToToggleFlowStatus,
137+
isPublishedVersionAvailable: !isNil(flow.publishedVersionId),
138+
isFlowPublished,
139+
triggerExplanation: getShortTriggerExplanation(
140+
flowVersion.trigger,
141+
triggerMetadata,
142+
flow,
143+
),
144+
permissionMessage,
145+
})}
142146
</TooltipContent>
143147
</Tooltip>
144148
{isLoading ? (

packages/react-ui/src/app/features/flows/lib/flow-status-toggle-utils.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,37 @@ import { Flow, Trigger, TriggerType } from '@openops/shared';
33
import cronstrue from 'cronstrue/i18n';
44
import i18n, { t } from 'i18next';
55

6+
const DEFAULT_PERMISSION_MESSAGE =
7+
"You don't have permission to perform this action. Please contact a Workspace owner";
8+
9+
export function getFlowStatusToggleTooltip({
10+
userHasPermission,
11+
isPublishedVersionAvailable,
12+
isFlowPublished,
13+
triggerExplanation,
14+
permissionMessage,
15+
}: {
16+
userHasPermission: boolean;
17+
isPublishedVersionAvailable: boolean;
18+
isFlowPublished: boolean;
19+
triggerExplanation: string;
20+
permissionMessage: string | undefined;
21+
}): string {
22+
if (!userHasPermission) {
23+
return permissionMessage ?? t(DEFAULT_PERMISSION_MESSAGE);
24+
}
25+
26+
if (!isPublishedVersionAvailable) {
27+
return t('Please publish workflow first');
28+
}
29+
30+
if (isFlowPublished) {
31+
return triggerExplanation;
32+
}
33+
34+
return t('Workflow is off. It only runs if manually triggered.');
35+
}
36+
637
export function getShortTriggerExplanation(
738
trigger: Trigger,
839
triggerMetadata: StepMetadata | undefined,

0 commit comments

Comments
 (0)