IO-3310 Shop Data Preservation on Hidden Fields

Signed-off-by: Allan Carr <allan@imexsystems.ca>
This commit is contained in:
Allan Carr
2025-07-22 17:40:51 -07:00
parent 953e70efef
commit 15ea4e6afa
2 changed files with 156 additions and 7 deletions

View File

@@ -1,15 +1,16 @@
import { useMutation, useQuery } from "@apollo/client";
import { Form } from "antd";
import dayjs from "../../utils/day";
import React, { useEffect, useState } from "react";
import { useEffect, useState } from "react";
import { useTranslation } from "react-i18next";
import { useNotification } from "../../contexts/Notifications/notificationContext.jsx";
import { logImEXEvent } from "../../firebase/firebase.utils";
import { QUERY_BODYSHOP, UPDATE_SHOP } from "../../graphql/bodyshop.queries";
import dayjs from "../../utils/day";
import AlertComponent from "../alert/alert.component";
import FormsFieldChanged from "../form-fields-changed-alert/form-fields-changed-alert.component";
import LoadingSpinner from "../loading-spinner/loading-spinner.component";
import ShopInfoComponent from "./shop-info.component";
import { useNotification } from "../../contexts/Notifications/notificationContext.jsx";
import { FEATURE_CONFIGS, useFormDataPreservation } from "./useFormDataPreservation";
export default function ShopInfoContainer() {
const [form] = Form.useForm();
@@ -22,16 +23,24 @@ export default function ShopInfoContainer() {
});
const notification = useNotification();
const handleFinish = (values) => {
const combinedFeatureConfig = {
...FEATURE_CONFIGS.general,
...FEATURE_CONFIGS.responsibilitycenters
};
// Use form data preservation for all shop-info features
const { createSubmissionHandler } = useFormDataPreservation(form, data?.bodyshops[0], combinedFeatureConfig);
const handleFinish = createSubmissionHandler((values) => {
setSaveLoading(true);
logImEXEvent("shop_update");
updateBodyshop({
variables: { id: data.bodyshops[0].id, shop: values }
})
.then((r) => {
.then(() => {
notification["success"]({ message: t("bodyshop.successes.save") });
refetch().then((_) => form.resetFields());
refetch().then(() => form.resetFields());
})
.catch((error) => {
notification["error"]({
@@ -39,7 +48,7 @@ export default function ShopInfoContainer() {
});
});
setSaveLoading(false);
};
});
useEffect(() => {
if (data) form.resetFields();