From 9a29d49f6e5864f46ca2ecd13d5d32fea9d5f5da Mon Sep 17 00:00:00 2001 From: Mounir Dhahri Date: Mon, 17 Jul 2023 15:50:18 +0200 Subject: [PATCH] fix: my collection artwork upload broken (#9004) Co-authored-by: Sultan Al-Maari --- .../MyCollectionArtworkForm.tests.tsx | 4 ++-- .../ArtworkForm/MyCollectionArtworkForm.tsx | 18 ++++++++++-------- .../Screens/MyCollectionArtworkFormArtwork.tsx | 4 +++- .../ArtworkForm/methods/uploadArtwork.ts | 2 +- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/app/Scenes/MyCollection/Screens/ArtworkForm/MyCollectionArtworkForm.tests.tsx b/src/app/Scenes/MyCollection/Screens/ArtworkForm/MyCollectionArtworkForm.tests.tsx index e7b9f4cc300..6362220254c 100644 --- a/src/app/Scenes/MyCollection/Screens/ArtworkForm/MyCollectionArtworkForm.tests.tsx +++ b/src/app/Scenes/MyCollection/Screens/ArtworkForm/MyCollectionArtworkForm.tests.tsx @@ -1,7 +1,7 @@ import { act, fireEvent } from "@testing-library/react-native" import { AutosuggestResultsQuery } from "__generated__/AutosuggestResultsQuery.graphql" import { myCollectionCreateArtworkMutation } from "__generated__/myCollectionCreateArtworkMutation.graphql" -import { updateArtwork } from "app/Scenes/MyCollection/Screens/ArtworkForm/methods/uploadArtwork" +import { saveOrUpdateArtwork } from "app/Scenes/MyCollection/Screens/ArtworkForm/methods/uploadArtwork" import { ArtworkFormValues } from "app/Scenes/MyCollection/State/MyCollectionArtworkModel" import * as artworkMutations from "app/Scenes/MyCollection/mutations/myCollectionCreateArtwork" import { Tab } from "app/Scenes/MyProfile/MyProfileHeaderMyCollectionAndSavedWorks" @@ -493,7 +493,7 @@ describe("MyCollectionArtworkForm", () => { const storeLocalImageMock = jest.spyOn(LocalImageStore, "storeLocalImage") - await updateArtwork(formValues, formCheckValues, props) + await saveOrUpdateArtwork(formValues, formCheckValues, props) expect(uploadPhotosMock).toBeCalledWith(fakePhotos) expect(addArtworkMock).toBeCalled() diff --git a/src/app/Scenes/MyCollection/Screens/ArtworkForm/MyCollectionArtworkForm.tsx b/src/app/Scenes/MyCollection/Screens/ArtworkForm/MyCollectionArtworkForm.tsx index 36c6d3cbbb6..a59b1b88eac 100644 --- a/src/app/Scenes/MyCollection/Screens/ArtworkForm/MyCollectionArtworkForm.tsx +++ b/src/app/Scenes/MyCollection/Screens/ArtworkForm/MyCollectionArtworkForm.tsx @@ -1,5 +1,5 @@ import { ActionType, ContextModule, OwnerType, SaveCollectedArtwork } from "@artsy/cohesion" -import { Flex, useScreenDimensions } from "@artsy/palette-mobile" +import { Flex } from "@artsy/palette-mobile" import { NavigationContainer, NavigationContainerRef } from "@react-navigation/native" import { createStackNavigator } from "@react-navigation/stack" import { MyCollectionArtworkEditQuery } from "__generated__/MyCollectionArtworkEditQuery.graphql" @@ -12,7 +12,7 @@ import { MyCollectionCustomArtistSchema, } from "app/Scenes/MyCollection/Screens/Artist/AddMyCollectionArtist" import { MyCollectionArtworkStore } from "app/Scenes/MyCollection/Screens/ArtworkForm/MyCollectionArtworkStore" -import { updateArtwork } from "app/Scenes/MyCollection/Screens/ArtworkForm/methods/uploadArtwork" +import { saveOrUpdateArtwork } from "app/Scenes/MyCollection/Screens/ArtworkForm/methods/uploadArtwork" import { ArtworkFormValues } from "app/Scenes/MyCollection/State/MyCollectionArtworkModel" import { Tab } from "app/Scenes/MyProfile/MyProfileHeaderMyCollectionAndSavedWorks" import { GlobalStore } from "app/store/GlobalStore" @@ -21,6 +21,7 @@ import { useFeatureFlag } from "app/utils/hooks/useFeatureFlag" import { refreshMyCollection, refreshMyCollectionInsights } from "app/utils/refreshHelpers" import { FormikProvider, useFormik } from "formik" import { useEffect, useRef, useState } from "react" +import { Alert, Dimensions } from "react-native" import { useTracking } from "react-tracking" import { SavingArtworkModal } from "./Components/SavingArtworkModal" import { artworkSchema, validateArtworkSchema } from "./Form/artworkSchema" @@ -100,7 +101,7 @@ export const MyCollectionArtworkForm: React.FC = ( await Promise.all([ // This is to satisfy showing the insights modal for 2500 ms __TEST__ ? undefined : new Promise((resolve) => setTimeout(resolve, 2500)), - updateArtwork(values, dirtyFormCheckValues, props).then((hasMarketPriceInsights) => { + saveOrUpdateArtwork(values, dirtyFormCheckValues, props).then((hasMarketPriceInsights) => { setSavingArtworkModalDisplayText( hasMarketPriceInsights ? "Generating market data" : "Saving artwork" ) @@ -123,16 +124,17 @@ export const MyCollectionArtworkForm: React.FC = ( refreshMyCollection() refreshMyCollectionInsights({}) - } catch (e) { - console.error("Artwork could not be saved", e) - setLoading(false) - } finally { + dismissModal() if (mode === "add") { popToRoot() } else { goBack() } + } catch (e) { + console.error("Artwork could not be saved", e) + setLoading(false) + Alert.alert("Artwork could not be saved") } } @@ -150,7 +152,7 @@ export const MyCollectionArtworkForm: React.FC = ( validationSchema: artworkSchema, }) - const { width, height } = useScreenDimensions() + const { width, height } = Dimensions.get("screen") return ( diff --git a/src/app/Scenes/MyCollection/Screens/ArtworkForm/Screens/MyCollectionArtworkFormArtwork.tsx b/src/app/Scenes/MyCollection/Screens/ArtworkForm/Screens/MyCollectionArtworkFormArtwork.tsx index 2bd12fc70b7..9c1d0da3169 100644 --- a/src/app/Scenes/MyCollection/Screens/ArtworkForm/Screens/MyCollectionArtworkFormArtwork.tsx +++ b/src/app/Scenes/MyCollection/Screens/ArtworkForm/Screens/MyCollectionArtworkFormArtwork.tsx @@ -11,6 +11,7 @@ import { useArtworkForm } from "app/Scenes/MyCollection/Screens/ArtworkForm/Form import { ArtworkFormScreen } from "app/Scenes/MyCollection/Screens/ArtworkForm/MyCollectionArtworkForm" import { GlobalStore } from "app/store/GlobalStore" import { getRelayEnvironment } from "app/system/relay/defaultEnvironment" +import { getAttributionClassValueByName } from "app/utils/artworkRarityClassifications" import { omit, pickBy } from "lodash" import React, { useEffect, useState } from "react" import { ScrollView } from "react-native" @@ -63,7 +64,8 @@ export const MyCollectionArtworkFormArtwork: React.FC< metric: preferredMetric, pricePaidCurrency: preferredCurrency, ...filteredFormValues, - attributionClass: artworkData.attributionClass?.name as any, + attributionClass: + getAttributionClassValueByName(artworkData.attributionClass?.name) || undefined, photos, }) } catch (error) { diff --git a/src/app/Scenes/MyCollection/Screens/ArtworkForm/methods/uploadArtwork.ts b/src/app/Scenes/MyCollection/Screens/ArtworkForm/methods/uploadArtwork.ts index 90c16f6ce5c..45fd57b6c81 100644 --- a/src/app/Scenes/MyCollection/Screens/ArtworkForm/methods/uploadArtwork.ts +++ b/src/app/Scenes/MyCollection/Screens/ArtworkForm/methods/uploadArtwork.ts @@ -9,7 +9,7 @@ import { deletedPhotos } from "app/Scenes/MyCollection/utils/deletedPhotos" import { storeLocalImage } from "app/utils/LocalImageStore" import { reverse } from "lodash" -export const updateArtwork = async ( +export const saveOrUpdateArtwork = async ( values: ArtworkFormValues, dirtyFormCheckValues: ArtworkFormValues, props: MyCollectionArtworkFormProps