From ca9229805e5f429e657787377dc3868024efd144 Mon Sep 17 00:00:00 2001 From: Paul Cowan Date: Fri, 24 Feb 2023 12:48:39 +0000 Subject: [PATCH] move useEventStream into scaffolder-react Signed-off-by: Paul Cowan --- plugins/scaffolder-react/package.json | 2 ++ plugins/scaffolder-react/src/hooks/index.ts | 5 +++++ .../src}/hooks/useEventStream.ts | 15 +++++++++++++++ plugins/scaffolder/package.json | 1 - .../src/components/TaskPage/TaskPage.tsx | 2 +- .../src/next/OngoingTask/OngoingTask.tsx | 6 ++++-- .../src/next/OngoingTask/TaskSteps/TaskSteps.tsx | 2 +- yarn.lock | 3 ++- 8 files changed, 30 insertions(+), 6 deletions(-) rename plugins/{scaffolder/src/components => scaffolder-react/src}/hooks/useEventStream.ts (96%) diff --git a/plugins/scaffolder-react/package.json b/plugins/scaffolder-react/package.json index 2d3e10ed9f..adf4a8b31a 100644 --- a/plugins/scaffolder-react/package.json +++ b/plugins/scaffolder-react/package.json @@ -66,11 +66,13 @@ "@rjsf/validator-ajv8": "5.1.0", "@types/json-schema": "^7.0.9", "classnames": "^2.2.6", + "immer": "^9.0.1", "json-schema": "^0.4.0", "json-schema-library": "^7.3.9", "lodash": "^4.17.21", "qs": "^6.9.4", "react-use": "^17.2.4", + "use-immer": "^0.8.0", "zen-observable": "^0.10.0", "zod": "~3.18.0", "zod-to-json-schema": "~3.18.0" diff --git a/plugins/scaffolder-react/src/hooks/index.ts b/plugins/scaffolder-react/src/hooks/index.ts index af64a9eebc..124950e83d 100644 --- a/plugins/scaffolder-react/src/hooks/index.ts +++ b/plugins/scaffolder-react/src/hooks/index.ts @@ -16,3 +16,8 @@ export { useCustomFieldExtensions } from './useCustomFieldExtensions'; export { useCustomLayouts } from './useCustomLayouts'; +export { + useTaskEventStream, + type TaskStream, + type Step, +} from './useEventStream'; diff --git a/plugins/scaffolder/src/components/hooks/useEventStream.ts b/plugins/scaffolder-react/src/hooks/useEventStream.ts similarity index 96% rename from plugins/scaffolder/src/components/hooks/useEventStream.ts rename to plugins/scaffolder-react/src/hooks/useEventStream.ts index be0ff922a4..101063d258 100644 --- a/plugins/scaffolder/src/components/hooks/useEventStream.ts +++ b/plugins/scaffolder-react/src/hooks/useEventStream.ts @@ -25,6 +25,11 @@ import { import { useApi } from '@backstage/core-plugin-api'; import { Subscription } from '@backstage/types'; +/** + * The status of the step being processed + * + * @public + */ export type Step = { id: string; status: ScaffolderTaskStatus; @@ -32,6 +37,11 @@ export type Step = { startedAt?: string; }; +/** + * A task event from the event stream + * + * @public + */ export type TaskStream = { loading: boolean; error?: Error; @@ -132,6 +142,11 @@ function reducer(draft: TaskStream, action: ReducerAction) { } } +/** + * A hook to stream the logs of a task being processed + * + * @public + */ export const useTaskEventStream = (taskId: string): TaskStream => { const scaffolderApi = useApi(scaffolderApiRef); const [state, dispatch] = useImmerReducer(reducer, { diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index b3d33298cb..8a0c1f8e26 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -82,7 +82,6 @@ "luxon": "^3.0.0", "qs": "^6.9.4", "react-use": "^17.2.4", - "use-immer": "^0.8.0", "yaml": "^2.0.0", "zen-observable": "^0.10.0", "zod": "~3.18.0", diff --git a/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx b/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx index 393bd495bf..a45f0cf413 100644 --- a/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx +++ b/plugins/scaffolder/src/components/TaskPage/TaskPage.tsx @@ -50,8 +50,8 @@ import useInterval from 'react-use/lib/useInterval'; import { ScaffolderTaskStatus, ScaffolderTaskOutput, + useTaskEventStream, } from '@backstage/plugin-scaffolder-react'; -import { useTaskEventStream } from '../hooks/useEventStream'; import { TaskErrors } from './TaskErrors'; import { TaskPageLinks } from './TaskPageLinks'; import { diff --git a/plugins/scaffolder/src/next/OngoingTask/OngoingTask.tsx b/plugins/scaffolder/src/next/OngoingTask/OngoingTask.tsx index d0aaf4b838..0832d5a3ac 100644 --- a/plugins/scaffolder/src/next/OngoingTask/OngoingTask.tsx +++ b/plugins/scaffolder/src/next/OngoingTask/OngoingTask.tsx @@ -15,7 +15,6 @@ */ import React, { useEffect, useMemo, useState, useCallback } from 'react'; import { Page, Header, Content, ErrorPanel } from '@backstage/core-components'; -import { useTaskEventStream } from '../../components/hooks/useEventStream'; import { useNavigate, useParams } from 'react-router-dom'; import { Box, makeStyles, Paper } from '@material-ui/core'; import { TaskSteps } from './TaskSteps'; @@ -25,7 +24,10 @@ import { nextSelectedTemplateRouteRef } from '../routes'; import { useRouteRef } from '@backstage/core-plugin-api'; import qs from 'qs'; import { ContextMenu } from './ContextMenu'; -import { ScaffolderTaskOutput } from '@backstage/plugin-scaffolder-react'; +import { + ScaffolderTaskOutput, + useTaskEventStream, +} from '@backstage/plugin-scaffolder-react'; import { DefaultTemplateOutputs } from '@backstage/plugin-scaffolder-react/alpha'; const useStyles = makeStyles({ diff --git a/plugins/scaffolder/src/next/OngoingTask/TaskSteps/TaskSteps.tsx b/plugins/scaffolder/src/next/OngoingTask/TaskSteps/TaskSteps.tsx index 7cf5ed71bf..2fcbe941d1 100644 --- a/plugins/scaffolder/src/next/OngoingTask/TaskSteps/TaskSteps.tsx +++ b/plugins/scaffolder/src/next/OngoingTask/TaskSteps/TaskSteps.tsx @@ -23,7 +23,7 @@ import { Box, } from '@material-ui/core'; import { TaskStep } from '@backstage/plugin-scaffolder-common'; -import { Step } from '../../../components/hooks/useEventStream'; +import { type Step } from '@backstage/plugin-scaffolder-react'; import { StepIcon } from './StepIcon'; import { StepTime } from './StepTime'; diff --git a/yarn.lock b/yarn.lock index 6973779ac5..a39f14efe0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7777,11 +7777,13 @@ __metadata: "@testing-library/user-event": ^14.0.0 "@types/json-schema": ^7.0.9 classnames: ^2.2.6 + immer: ^9.0.1 json-schema: ^0.4.0 json-schema-library: ^7.3.9 lodash: ^4.17.21 qs: ^6.9.4 react-use: ^17.2.4 + use-immer: ^0.8.0 zen-observable: ^0.10.0 zod: ~3.18.0 zod-to-json-schema: ~3.18.0 @@ -7848,7 +7850,6 @@ __metadata: msw: ^1.0.0 qs: ^6.9.4 react-use: ^17.2.4 - use-immer: ^0.8.0 yaml: ^2.0.0 zen-observable: ^0.10.0 zod: ~3.18.0