Skip to content

Commit

Permalink
fix(dashboard): In app step form fixes (#7144)
Browse files Browse the repository at this point in the history
  • Loading branch information
desiprisg authored Nov 27, 2024
1 parent 2a94ff0 commit e5d7b0f
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import { buildDefaultValues, buildDynamicZodSchema } from '@/utils/schema';
import { useWorkflowEditorContext } from '../../hooks';
import { flattenIssues } from '../../step-utils';
import { CustomStepControls } from '../controls/custom-step-controls';
import { useStep } from '../use-step';
import { useStepEditorContext } from '@/components/workflow-editor/steps/hooks';
import { NovuApiError } from '@/api/api.client';

Expand All @@ -35,22 +34,22 @@ export const InAppTabs = ({ workflow, step }: { workflow: WorkflowResponseDto; s
const { stepSlug = '', workflowSlug = '' } = useParams<{ workflowSlug: string; stepSlug: string }>();
const { resetWorkflowForm } = useWorkflowEditorContext();
const { refetch: refetchStep } = useStepEditorContext();
const { step: workflowStep } = useStep();

const { dataSchema, uiSchema, values } = step.controls;
const schema = useMemo(() => buildDynamicZodSchema(dataSchema ?? {}), [dataSchema]);
const newFormValues = useMemo(() => merge(buildDefaultValues(uiSchema ?? {}), values), [uiSchema, values]);

const form = useForm({
mode: 'onSubmit',
mode: 'onChange',
resolver: zodResolver(schema),
values: newFormValues,
defaultValues: newFormValues,
shouldFocusError: true,
});

const [editorValue, setEditorValue] = useState('{}');
const { formState, setError } = form;

const controlErrors = useMemo(() => flattenIssues(workflowStep?.issues?.controls), [workflowStep]);
const controlErrors = useMemo(() => flattenIssues(step?.issues?.controls), [step]);

useEffect(() => {
if (Object.keys(controlErrors).length) {
Expand All @@ -62,9 +61,10 @@ export const InAppTabs = ({ workflow, step }: { workflow: WorkflowResponseDto; s

const { previewStep, data: previewData, isPending: isPreviewPending } = usePreviewStep();
const { isPending, updateWorkflow } = useUpdateWorkflow({
onSuccess: (data) => {
onSuccess: async (data) => {
resetWorkflowForm(data);
refetchStep();
const step = await refetchStep();
form.reset(merge(buildDefaultValues(uiSchema ?? {}), step.data?.controls.values));
showToast({
children: () => (
<>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import { createContext } from 'react';
import { type StepDataDto, StepTypeEnum } from '@novu/shared';
import { QueryObserverResult, RefetchOptions } from '@tanstack/react-query';

export type StepEditorContextType = {
isPendingStep: boolean;
isRefetchingStep: boolean;
step?: StepDataDto;
stepType?: StepTypeEnum;
refetch: () => void;
refetch: (options?: RefetchOptions) => Promise<QueryObserverResult<StepDataDto, Error>>;
};

export const StepEditorContext = createContext<StepEditorContextType>({} as StepEditorContextType);

0 comments on commit e5d7b0f

Please sign in to comment.