From a5f7e3a50ccbbe85efcedf80039fea3e3b47bffe Mon Sep 17 00:00:00 2001 From: Francisco Cardoso Date: Wed, 13 Sep 2023 19:32:22 +0100 Subject: [PATCH] trying-to-edit-offer-redirects-you-to-home-page Co-authored-by: Daniel Ferreira --- src/components/Offers/Edit/EditOfferForm.js | 17 ++++++++--------- .../Offers/Edit/EditOfferForm.spec.js | 3 ++- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/components/Offers/Edit/EditOfferForm.js b/src/components/Offers/Edit/EditOfferForm.js index 44fab611..d7ea700d 100644 --- a/src/components/Offers/Edit/EditOfferForm.js +++ b/src/components/Offers/Edit/EditOfferForm.js @@ -1,5 +1,5 @@ import React, { useCallback, useContext, useEffect, useState } from "react"; -import { OfferConstants, parseApplyURL, parseRequestErrors } from "../Form/OfferUtils"; +import { OfferConstants, parseRequestErrors } from "../Form/OfferUtils"; import OfferForm from "../Form/form-components/OfferForm"; import { editOffer } from "../../../services/offerService"; import { Redirect, useLocation, useParams } from "react-router-dom"; @@ -28,7 +28,6 @@ const parseOfferForm = ({ isPaid, vacancies, description, - applyURL, ...offer }) => ({ jobDuration: [ @@ -42,7 +41,6 @@ const parseOfferForm = ({ vacancies: vacancies || "", description, descriptionText: parseDescription(description), - applyURL: applyURL.startsWith("mailto:") ? applyURL.substring(7) : applyURL, ...offer, }); @@ -59,11 +57,11 @@ export const EditOfferController = () => { (offer?.owner === user?.company?._id) || user?.isAdmin); }, [offer, user]); - const [canEdit, setCanEdit] = useState(shouldRevalidateEditingPermissions()); + const [canEdit, setCanEdit] = useState(undefined); useEffect(() => { - setCanEdit(shouldRevalidateEditingPermissions()); - }, [shouldRevalidateEditingPermissions, loadingOffer, offer, user]); + if (!isValidating && !loadingOffer) setCanEdit(shouldRevalidateEditingPermissions()); + }, [isValidating, loadingOffer, shouldRevalidateEditingPermissions]); const location = useLocation(); @@ -109,7 +107,7 @@ export const EditOfferController = () => { requirements: data.requirements.map((val) => val.value), isPaid: data.isPaid === "none" ? null : data.isPaid, jobStartDate: !data.jobStartDate ? null : data.jobStartDate, - applyURL: parseApplyURL(data.applyURL), + applyURL: data.applyURL || null, jobMinDuration, jobMaxDuration, }) @@ -154,11 +152,12 @@ const EditOfferForm = () => { loadingOffer, errorOffer, redirectProps, - isValidating, canEdit, } = useContext(EditOfferControllerContext); - if (errorOffer || (!loadingOffer && !isValidating && canEdit === false)) { + if (canEdit === undefined) return null; + + if (errorOffer || canEdit === false) { return ; } diff --git a/src/components/Offers/Edit/EditOfferForm.spec.js b/src/components/Offers/Edit/EditOfferForm.spec.js index 41db3ceb..3bee6bcb 100644 --- a/src/components/Offers/Edit/EditOfferForm.spec.js +++ b/src/components/Offers/Edit/EditOfferForm.spec.js @@ -579,7 +579,8 @@ describe("Edit Offer Form", () => { }); it("should fail validation if applyURL not following the regex", async () => { - useSession.mockImplementation(() => ({ isLoggedIn: true, data: { company: { name: "Company Name" } } })); + useSession.mockImplementation(() => ({ isLoggedIn: true, data: { company: { _id: "company_id" } } })); + useOffer.mockImplementation(() => ({ offer, loading: false, error: null, mutate: () => {} })); const wrapper = renderWithStoreAndTheme(