From d3a318af9f4c5a067b06aea8146043b9441753e6 Mon Sep 17 00:00:00 2001 From: Steve Rydz Date: Mon, 14 Oct 2024 12:50:11 +0100 Subject: [PATCH] feat: Show message when making metadata changes --- .../hooks/__tests__/useMutateListingData.test.ts | 1 + .../js/publisher-pages/hooks/useMutateListingData.ts | 8 ++++++++ .../pages/Listing/ListingForm/ListingForm.tsx | 12 ++++++++++++ webapp/publisher/snaps/listing_views.py | 9 +++++++-- 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/static/js/publisher-pages/hooks/__tests__/useMutateListingData.test.ts b/static/js/publisher-pages/hooks/__tests__/useMutateListingData.test.ts index 64ce5d7017..19cdec8a4e 100644 --- a/static/js/publisher-pages/hooks/__tests__/useMutateListingData.test.ts +++ b/static/js/publisher-pages/hooks/__tests__/useMutateListingData.test.ts @@ -19,6 +19,7 @@ describe("useMutateListingData", () => { setUpdateMetadataOnRelease: jest.fn(), shouldShowUpdateMetadataWarning: jest.fn(), snapName: "test-snap", + setShowUpdateMetadataMessage: jest.fn(), }), ); expect(ReactQuery.useMutation).toHaveBeenCalled(); diff --git a/static/js/publisher-pages/hooks/useMutateListingData.ts b/static/js/publisher-pages/hooks/useMutateListingData.ts index db3cd9f48d..d32a82057a 100644 --- a/static/js/publisher-pages/hooks/useMutateListingData.ts +++ b/static/js/publisher-pages/hooks/useMutateListingData.ts @@ -16,6 +16,7 @@ type Options = { setUpdateMetadataOnRelease: Dispatch>; shouldShowUpdateMetadataWarning: (arg: FieldValues) => boolean; snapName: string | undefined; + setShowUpdateMetadataMessage: Dispatch>; }; function useMutateListingData({ @@ -27,6 +28,7 @@ function useMutateListingData({ setUpdateMetadataOnRelease, shouldShowUpdateMetadataWarning, snapName, + setShowUpdateMetadataMessage, }: Options) { return useMutation({ mutationFn: async (values: FieldValues) => { @@ -83,6 +85,12 @@ function useMutateListingData({ if (!response.ok) { throw new Error("There was a problem saving listing data"); } + + const responseData = await response.json(); + + if (!responseData.data.text_fields_updated) { + setShowUpdateMetadataMessage(true); + } }, onSuccess: () => { const mainPanel = document.querySelector(".l-main") as HTMLElement; diff --git a/static/js/publisher-pages/pages/Listing/ListingForm/ListingForm.tsx b/static/js/publisher-pages/pages/Listing/ListingForm/ListingForm.tsx index c55ad2bc60..ffdc8eeb2c 100644 --- a/static/js/publisher-pages/pages/Listing/ListingForm/ListingForm.tsx +++ b/static/js/publisher-pages/pages/Listing/ListingForm/ListingForm.tsx @@ -48,6 +48,9 @@ function ListingForm({ data, refetch }: Props): JSX.Element { const [showSuccessNotification, setShowSuccessNotification] = useState(false); + const [showUpdateMetadataMessage, setShowUpdateMetadataMessage] = + useState(false); + const [updateMetadataOnRelease, setUpdateMetadataOnRelease] = useState(data.update_metadata_on_release); @@ -68,6 +71,7 @@ function ListingForm({ data, refetch }: Props): JSX.Element { setUpdateMetadataOnRelease, shouldShowUpdateMetadataWarning, snapName: snapId, + setShowUpdateMetadataMessage, }); return ( @@ -140,6 +144,14 @@ function ListingForm({ data, refetch }: Props): JSX.Element { )} + {showUpdateMetadataMessage && ( + + + Metadata updates will be processed and applied shortly + + + )} +