diff --git a/packages/app-builder/src/routes/_builder+/scenarios+/$scenarioId+/i+/$iterationId+/_edit-view+/_layout.tsx b/packages/app-builder/src/routes/_builder+/scenarios+/$scenarioId+/i+/$iterationId+/_edit-view+/_layout.tsx index 0f9b03ab5..bdba2be75 100644 --- a/packages/app-builder/src/routes/_builder+/scenarios+/$scenarioId+/i+/$iterationId+/_edit-view+/_layout.tsx +++ b/packages/app-builder/src/routes/_builder+/scenarios+/$scenarioId+/i+/$iterationId+/_edit-view+/_layout.tsx @@ -38,13 +38,22 @@ export const handle = { export async function loader({ request, params }: LoaderFunctionArgs) { const { authService } = serverServices; - const { scenario } = await authService.isAuthenticated(request, { + const { scenario, user } = await authService.isAuthenticated(request, { failureRedirect: getRoute('/sign-in'), }); const scenarioId = fromParams(params, 'scenarioId'); const iterationId = fromParams(params, 'iterationId'); + if (!user.permissions.canPublishScenario) { + return json({ + withDeploymentActions: false as const, + scenarioIterations: await scenario.listScenarioIterations({ + scenarioId, + }), + }); + } + const [scenarioIterations, publicationPreparationStatus] = await Promise.all([ scenario.listScenarioIterations({ scenarioId, @@ -55,6 +64,7 @@ export async function loader({ request, params }: LoaderFunctionArgs) { ]); return json({ + withDeploymentActions: true as const, scenarioIterations, publicationPreparationStatus, }); @@ -64,9 +74,9 @@ export default function ScenarioEditLayout() { const { t } = useTranslation(handle.i18n); const currentScenario = useCurrentScenario(); const scenarioValidation = useCurrentScenarioValidation(); - const { scenarioIterations, publicationPreparationStatus } = - useLoaderData(); - const { canManageScenario, canPublishScenario } = usePermissionsContext(); + const loaderData = useLoaderData(); + const { canManageScenario } = usePermissionsContext(); + const { scenarioIterations } = loaderData; const sortedScenarioIterations = sortScenarioIterations( scenarioIterations, @@ -88,7 +98,6 @@ export default function ScenarioEditLayout() { const withEditTag = editorMode === 'edit'; const withCreateDraftIteration = canManageScenario && currentIteration.type !== 'draft'; - const withDeploymentActions = canPublishScenario; return ( @@ -126,7 +135,7 @@ export default function ScenarioEditLayout() { draftId={draftIteration?.id} /> ) : null} - {withDeploymentActions ? ( + {loaderData.withDeploymentActions ? ( ) : null}