From 48df0d0e32607c01c4437afce54076e8155fd02b Mon Sep 17 00:00:00 2001 From: benjdlambert Date: Fri, 26 Sep 2025 12:50:15 +0200 Subject: [PATCH] chore: fixing loading state Signed-off-by: benjdlambert --- .../src/hooks/useEventStream.ts | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/plugins/scaffolder-react/src/hooks/useEventStream.ts b/plugins/scaffolder-react/src/hooks/useEventStream.ts index 7c5ce09ab7..01906d3e32 100644 --- a/plugins/scaffolder-react/src/hooks/useEventStream.ts +++ b/plugins/scaffolder-react/src/hooks/useEventStream.ts @@ -19,12 +19,12 @@ import { useEffect } from 'react'; import { useApi } from '@backstage/core-plugin-api'; import { Subscription } from '@backstage/types'; import { - LogEvent, - scaffolderApiRef, - ScaffolderTask, - ScaffolderTaskOutput, ScaffolderTaskStatus, -} from '../api'; + ScaffolderTaskOutput, + ScaffolderTask, + LogEvent, +} from '@backstage/plugin-scaffolder-common'; +import { scaffolderApiRef } from '../api'; /** * The status of the step being processed @@ -85,7 +85,6 @@ function reducer(draft: TaskStream, action: ReducerAction) { current[next.id] = []; return current; }, {} as { [stepId in string]: string[] }); - draft.loading = false; draft.error = undefined; draft.completed = false; draft.task = action.data; @@ -96,6 +95,12 @@ function reducer(draft: TaskStream, action: ReducerAction) { const entries = action.data; const logLines = []; + // only set loading as false once we have logs, + // otherwise things flicker from pending to loaded. + if (draft.loading && entries.length > 0) { + draft.loading = false; + } + for (const entry of entries) { const logLine = `${entry.createdAt} ${entry.body.message}`; logLines.push(logLine);