From 48df0d0e32607c01c4437afce54076e8155fd02b Mon Sep 17 00:00:00 2001 From: benjdlambert Date: Fri, 26 Sep 2025 12:50:15 +0200 Subject: [PATCH 1/3] 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); From e61f89e611b3d5a6efd46ebb7d2e49e431dc5ee7 Mon Sep 17 00:00:00 2001 From: benjdlambert Date: Fri, 26 Sep 2025 12:51:09 +0200 Subject: [PATCH 2/3] chore: changeset Signed-off-by: benjdlambert --- .changeset/curvy-bobcats-melt.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/curvy-bobcats-melt.md diff --git a/.changeset/curvy-bobcats-melt.md b/.changeset/curvy-bobcats-melt.md new file mode 100644 index 0000000000..a9a5d58e5c --- /dev/null +++ b/.changeset/curvy-bobcats-melt.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-react': patch +--- + +Don't change loading to false until we've actually got some log state From 68c0f72084ead2fa884653747b4067f379d079f7 Mon Sep 17 00:00:00 2001 From: benjdlambert Date: Fri, 26 Sep 2025 13:01:29 +0200 Subject: [PATCH 3/3] chore: fix api-reports Signed-off-by: benjdlambert --- plugins/scaffolder-react/report.api.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/scaffolder-react/report.api.md b/plugins/scaffolder-react/report.api.md index 4b81a18eb6..daec52a7e3 100644 --- a/plugins/scaffolder-react/report.api.md +++ b/plugins/scaffolder-react/report.api.md @@ -354,7 +354,7 @@ export type ScaffolderScaffoldResponse = ScaffolderScaffoldResponse_2; // @public export type ScaffolderStep = { id: string; - status: ScaffolderTaskStatus; + status: ScaffolderTaskStatus_2; endedAt?: string; startedAt?: string; }; @@ -398,11 +398,11 @@ export type TaskStream = { [stepId in string]: string[]; }; completed: boolean; - task?: ScaffolderTask; + task?: ScaffolderTask_2; steps: { [stepId in string]: ScaffolderStep; }; - output?: ScaffolderTaskOutput; + output?: ScaffolderTaskOutput_2; }; // @public @deprecated