Skip to content
This repository has been archived by the owner on Jul 23, 2024. It is now read-only.

Commit

Permalink
Merge pull request #157 from parodos-dev/pc/remove-assessment-task-check
Browse files Browse the repository at this point in the history
remove assessmentTask
  • Loading branch information
RichardW98 authored Jun 6, 2023
2 parents b032797 + 1be54e5 commit a42cb83
Show file tree
Hide file tree
Showing 8 changed files with 23 additions and 52 deletions.
5 changes: 0 additions & 5 deletions plugins/parodos/config.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,6 @@ export interface Config {
* @visibility frontend
*/
assessment: string;
/**
* TODO: description
* @visibility frontend
*/
assessmentTask: string;
};
/**
* TODO: description
Expand Down
1 change: 0 additions & 1 deletion plugins/parodos/src/components/TestApp.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ export const TestApp: React.FC = ({ children }) => {
parodos: {
workflows: {
assessment: 'onboardingAssessment_ASSESSMENT_WORKFLOW',
assessmentTask: 'onboardingAssessmentTask',
},
pollingInterval: 5000,
},
Expand Down
1 change: 0 additions & 1 deletion plugins/parodos/src/components/api/useGetAppConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ export const useGetAppConfig = (): ParodosConfig => {
backendUrl: configApi.getString('backend.baseUrl'),
workflows: {
assessment: configApi.getString('parodos.workflows.assessment'),
assessmentTask: configApi.getString('parodos.workflows.assessmentTask'),
},
pollingInterval: configApi.getNumber('parodos.pollingInterval'),
}),
Expand Down
7 changes: 4 additions & 3 deletions plugins/parodos/src/components/workflow/Workflow.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import React, { useEffect, useState } from 'react';
import {
ContentHeader,
InfoCard,
Progress,
SupportButton,
} from '@backstage/core-components';
import { errorApiRef, useApi } from '@backstage/core-plugin-api';
Expand Down Expand Up @@ -40,7 +41,6 @@ const useStyles = makeStyles(theme => ({

export function Workflow(): JSX.Element {
const assessment = useStore(state => state.workflows.assessment);
const assessmentTask = useStore(state => state.workflows.assessmentTask);
const [searchParams] = useSearchParams();
const selectedProject = useStore(state =>
state.getProjectById(searchParams.get('project')),
Expand All @@ -57,7 +57,7 @@ export function Workflow(): JSX.Element {
const formSchema = useGetProjectAssessmentSchema();

const [{ error: createWorkflowError, loading: _ }, createWorkflow] =
useCreateWorkflow({ assessment, assessmentTask });
useCreateWorkflow({ assessment });

const [{ error: startAssessmentError }, startAssessment] = useAsyncFn(
async ({ formData }: IChangeEvent<Record<string, ProjectsPayload>>) => {
Expand All @@ -66,7 +66,7 @@ export function Workflow(): JSX.Element {
setAssessmentStatus('inprogress');

setWorkflowOptions(
await createWorkflow({ workflowProject: selectedProject, formData }),
await createWorkflow({ project: selectedProject, formData }),
);

setAssessmentStatus('complete');
Expand Down Expand Up @@ -100,6 +100,7 @@ export function Workflow(): JSX.Element {
Select a project for an assessment of what additional workflows, if any,
it qualifies for.
</Typography>
{inProgress && <Progress />}
{formSchema && (
<InfoCard className={styles.fullHeight}>
<Grid container direction="row" className={styles.form}>
Expand Down
47 changes: 18 additions & 29 deletions plugins/parodos/src/components/workflow/hooks/useCreateWorkflow.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ import { useStore } from '../../../stores/workflowStore/workflowStore';
import { fetchApiRef, useApi } from '@backstage/core-plugin-api';
import { getWorkflowOptions } from './getWorkflowOptions';
import { pollWorkflowStatus } from './pollWorkflowStatus';
import { getWorklfowsPayload } from './workflowsPayload';
import assert from 'assert-ts';

export type WorkflowOptionsListItem = WorkflowOptionItem & { type: string };

Expand All @@ -21,47 +23,34 @@ export interface ProjectsPayload {
project?: Project;
}

export function useCreateWorkflow({
assessment,
assessmentTask,
}: {
assessment: string;
assessmentTask: string;
}) {
export function useCreateWorkflow({ assessment }: { assessment: string }) {
const workflowsUrl = useStore(state => state.getApiUrl(urls.Workflows));
const assessmentWorkflow = useStore(state =>
state.getWorkDefinitionBy('byName', assessment),
);

assert(!!assessmentWorkflow, `no assessmentWorkflow found for ${assessment}`);

const { fetch } = useApi(fetchApiRef);

return useAsyncFn(
async ({
workflowProject,
project,
formData,
}: {
workflowProject: Project;
project: Project;
formData: Record<string, ProjectsPayload>;
}) => {
delete formData[assessmentTask].project;
const payload = getWorklfowsPayload({
projectId: project.id,
workflow: assessmentWorkflow,
schema: formData,
});

// TODO: task here should be dynamic based on assessment workflow definition
const workFlowResponse = await fetch(workflowsUrl, {
method: 'POST',
body: JSON.stringify({
projectId: workflowProject.id,
workFlowName: assessment,
works: [
{
type: 'TASK',
workName: assessmentTask,
arguments: Object.entries(formData[assessmentTask]).map(
([key, value]) => {
return {
key: key,
value: value,
};
},
),
},
],
}),
body: JSON.stringify(payload),
});

if (!workFlowResponse.ok) {
Expand Down Expand Up @@ -96,6 +85,6 @@ export function useCreateWorkflow({

return options;
},
[assessment, assessmentTask, fetch, workflowsUrl],
[assessmentWorkflow, fetch, workflowsUrl],
);
}
11 changes: 1 addition & 10 deletions plugins/parodos/src/hooks/useInitializeStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,23 +29,14 @@ export const useInitializeStore = () => {
return;
}

const { assessment, assessmentTask } = appConfig.workflows;
const { assessment } = appConfig.workflows;

const assessmentWorkflow = getWorkDefinitionBy('byName', assessment);

assert(
!!assessmentWorkflow,
`invalid workflow config for assessment ${assessment}`,
);

const assessmentWorkflowTask = assessmentWorkflow?.works.find(
w => w.name === assessmentTask,
);

assert(
!!assessmentWorkflowTask,
`no assessment task named ${assessmentTask} found in ${assessment} works array`,
);
}, [appConfig.workflows, getWorkDefinitionBy, workflowDefinitions]);

return {
Expand Down
2 changes: 0 additions & 2 deletions plugins/parodos/src/stores/slices/uiSlice.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ export const createUISlice: StateCreator<
pollingInterval: 0,
workflows: {
assessment: '',
assessmentTask: '',
},
getApiUrl(url: string) {
return `${get().baseUrl}${url}`;
Expand All @@ -23,7 +22,6 @@ export const createUISlice: StateCreator<
unstable_batchedUpdates(() => {
state.baseUrl = config.backendUrl;
state.workflows.assessment = config.workflows.assessment;
state.workflows.assessmentTask = config.workflows.assessmentTask;
state.pollingInterval = config.pollingInterval;
}, false);
});
Expand Down
1 change: 0 additions & 1 deletion plugins/parodos/src/types.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ export interface ParodosConfig {
backendUrl: string;
workflows: {
assessment: string;
assessmentTask: string;
};
pollingInterval: number;
}

0 comments on commit a42cb83

Please sign in to comment.