chore: refactor, and move the execution
Signed-off-by: blam <ben@blam.sh>
This commit is contained in:
@@ -120,11 +120,11 @@ export const Stepper = (stepperProps: StepperProps) => {
|
||||
reviewButtonText = 'Review',
|
||||
} = components;
|
||||
const analytics = useAnalytics();
|
||||
const { presentation, steps } = useTemplateSchema(props.manifest);
|
||||
const apiHolder = useApiHolder();
|
||||
const [activeStep, setActiveStep] = useState(0);
|
||||
const [isValidating, setIsValidating] = useState(false);
|
||||
const [initialState] = useFormDataFromQuery(props.initialState);
|
||||
const { presentation, steps } = useTemplateSchema(props.manifest);
|
||||
const [stepsState, setStepsState] =
|
||||
useState<Record<string, JsonValue>>(initialState);
|
||||
|
||||
|
||||
@@ -26,10 +26,7 @@ import { makeStyles } from '@material-ui/core/styles';
|
||||
import { errorApiRef, useAnalytics, useApi } from '@backstage/core-plugin-api';
|
||||
import { useTemplateParameterSchema } from '../../hooks/useTemplateParameterSchema';
|
||||
import { Stepper, type StepperProps } from '../Stepper/Stepper';
|
||||
import {
|
||||
SecretsContextProvider,
|
||||
useInternalTemplateSecrets,
|
||||
} from '../../../secrets/SecretsContext';
|
||||
import { SecretsContextProvider } from '../../../secrets/SecretsContext';
|
||||
import { useFilteredSchemaProperties } from '../../hooks/useFilteredSchemaProperties';
|
||||
import { ReviewStepProps } from '@backstage/plugin-scaffolder-react';
|
||||
import { useTemplateTimeSavedMinutes } from '../../hooks/useTemplateTimeSaved';
|
||||
@@ -88,40 +85,9 @@ export const Workflow = (workflowProps: WorkflowProps): JSX.Element | null => {
|
||||
const { loading, manifest, error } = useTemplateParameterSchema(templateRef);
|
||||
const sortedManifest = useFilteredSchemaProperties(manifest);
|
||||
const minutesSaved = useTemplateTimeSavedMinutes(templateRef);
|
||||
const { setSecrets } = useInternalTemplateSecrets();
|
||||
const formDecorators = useFormDecorators();
|
||||
|
||||
const workflowOnCreate = useCallback(
|
||||
async (originalFormState: Record<string, JsonValue>) => {
|
||||
let formState: Record<string, JsonValue> = { ...originalFormState };
|
||||
|
||||
if (manifest?.EXPERIMENTAL_formDecorators) {
|
||||
// for each of the form decorators, go and call the decorator with the context
|
||||
await Promise.all(
|
||||
manifest.EXPERIMENTAL_formDecorators.map(async decorator => {
|
||||
const formDecorator = formDecorators?.get(decorator.id);
|
||||
if (!formDecorator) {
|
||||
// eslint-disable-next-line no-console
|
||||
console.error('Failed to find form decorator', decorator.id);
|
||||
return;
|
||||
}
|
||||
|
||||
await formDecorator.decorator({
|
||||
setSecrets,
|
||||
setFormState: (
|
||||
handler: (
|
||||
oldState: Record<string, JsonValue>,
|
||||
) => Record<string, JsonValue>,
|
||||
) => {
|
||||
formState = { ...handler(formState) };
|
||||
},
|
||||
formState,
|
||||
input: decorator.input ?? {},
|
||||
});
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
async (formState: Record<string, JsonValue>) => {
|
||||
onCreate(formState);
|
||||
|
||||
const name =
|
||||
@@ -130,15 +96,7 @@ export const Workflow = (workflowProps: WorkflowProps): JSX.Element | null => {
|
||||
value: minutesSaved,
|
||||
});
|
||||
},
|
||||
[
|
||||
manifest?.EXPERIMENTAL_formDecorators,
|
||||
formDecorators,
|
||||
onCreate,
|
||||
analytics,
|
||||
templateName,
|
||||
minutesSaved,
|
||||
setSecrets,
|
||||
],
|
||||
[onCreate, analytics, templateName, minutesSaved],
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
|
||||
@@ -94,15 +94,3 @@ export const useTemplateSecrets = (): ScaffolderUseTemplateSecrets => {
|
||||
|
||||
return { setSecrets, secrets };
|
||||
};
|
||||
|
||||
export const useInternalTemplateSecrets = () => {
|
||||
const value = useContext(SecretsContext)?.atVersion(1);
|
||||
|
||||
if (!value) {
|
||||
throw new Error(
|
||||
'useTemplateSecrets must be used within a SecretsContextProvider',
|
||||
);
|
||||
}
|
||||
|
||||
return value;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user