From a69ec146cbffe9b3deee032df646a0398f152919 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arthur=20Ferr=C3=A3o?= Date: Thu, 3 Oct 2024 19:11:15 -0300 Subject: [PATCH 1/2] fix: pickup selected is changing when page reloads --- react/hooks/useShippingOptions.ts | 20 +++++++++++++++----- react/utils/cookie.ts | 16 ++++++++-------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/react/hooks/useShippingOptions.ts b/react/hooks/useShippingOptions.ts index a39c6e1..afc17b6 100644 --- a/react/hooks/useShippingOptions.ts +++ b/react/hooks/useShippingOptions.ts @@ -4,7 +4,7 @@ import { useRuntime, useSSR } from 'vtex.render-runtime' import { useIntl } from 'react-intl' import { usePixel } from 'vtex.pixel-manager' -import { getCountryCode, getOrderFormId, getZipCode } from '../utils/cookie' +import { getCountryCode, getOrderFormId, getFacetsData } from '../utils/cookie' import messages from '../messages' import { getAddress, @@ -37,15 +37,25 @@ const useShippingOptions = () => { setPickups(responsePickups.items) - if (responsePickups.items.length === 0) { + if (responsePickups?.items?.length === 0) { setIsLoading(false) return } - setSelectecPickup(responsePickups.items[0]) + let [pickup] = responsePickups.items - await updateSession(zipCode, coordinates, responsePickups.items[0]) + const pickupPointId = getFacetsData('pickupPoint') + + if (pickupPointId) { + pickup = responsePickups.items.find( + (p: any) => p.pickupPoint.id === pickupPointId + ) + } + + setSelectecPickup(pickup) + + await updateSession(zipCode, coordinates, pickup) setIsLoading(false) }, @@ -57,7 +67,7 @@ const useShippingOptions = () => { return } - const segmentZipCode = getZipCode() + const segmentZipCode = getFacetsData('zip-code') const segmentCountryCode = getCountryCode() setSelectedZipCode(segmentZipCode) diff --git a/react/utils/cookie.ts b/react/utils/cookie.ts index be1b139..b79d931 100644 --- a/react/utils/cookie.ts +++ b/react/utils/cookie.ts @@ -9,7 +9,7 @@ export function getCookie(name: string) { return undefined } -export function getZipCode() { +export function getFacetsData(facetsDataTarget: string) { const segment = (window as any)?.__RUNTIME__.segmentToken if (!segment) { @@ -22,21 +22,21 @@ export function getZipCode() { return } - const zipCodeFacet = facets + const facetsTarget = facets .split(';') - .find((facet: string) => facet.indexOf('zip-code') > -1) + .find((facet: string) => facet.indexOf(facetsDataTarget) > -1) - if (!zipCodeFacet) { + if (!facetsTarget) { return } - const [, zipCode] = zipCodeFacet.split('=') + const [, data] = facetsTarget.split('=') - if (zipCode && zipCode[zipCode.length - 1] === ';') { - return zipCode.substring(0, zipCode.length - 1) + if (data && data[data.length - 1] === ';') { + return data.substring(0, data.length - 1) } - return zipCode + return data } export function getCountryCode() { From 7e3d4f2ff436994e8ecfb2641fad340690897909 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arthur=20Ferr=C3=A3o?= Date: Fri, 4 Oct 2024 10:37:48 -0300 Subject: [PATCH 2/2] update changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b2cfcda..cae3940 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed + +- Selected pickup did not change. + ## [0.3.0] - 2024-10-04 ### Added