🐛 fix(HostedCart): refresh minicart URL when persistKey changes (#685)#740
Merged
🐛 fix(HostedCart): refresh minicart URL when persistKey changes (#685)#740
Conversation
❌ Deploy Preview for commercelayer-react-components failed.
|
commit: |
… and fix useEffect deps
acasazza
added a commit
that referenced
this pull request
Apr 9, 2026
🐛 fix(HostedCart): refresh minicart URL when persistKey changes — v5 port (#740)
…gout in My Account Closes #687
- Replace open !== isOpen check with prevOpenRef to only call setOpen when the open prop itself changes, not on unrelated effect re-runs - Fix subscription leak: store openCartHandler in a named variable so unsubscribe passes the same reference as subscribe Closes #686 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace synchronous href + onClick with useEffect that resolves org config on mount, falling back to getApplicationLink.
malessani
approved these changes
Apr 14, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes
🐛 Fix:
HostedCart— refresh minicart URL whenpersistKeychanges (Closes #685)loadedOrderIdRefto track which order ID the currentsrcwas built forpersistKeytouseEffectdependency array so the cart URL recomputes when the storage key changessetOrderorg-config lookup to useorder?.id ?? orderIdconsistentlyspecs/orders/hosted-cart.spec.tsx📦 Deps: bump
@commercelayer/organization-configto^2.8.4^2.4.0to^2.8.4to unlock newConfigParamsfields:identityType,clientId,scope,returnUrl,resetPasswordUrl,skuListId,skuId,lang,token✨ Feat:
MyIdentityLink— pass all identity params togetOrganizationConfigidentityType,clientId,scope,returnUrl,resetPasswordUrltogetOrganizationConfiggetDomain(endpoint)inside theuseEffectcallback to keep deps cleanuseEffectdependency array to include all consumed props✨ Feat:
AddToCartButton— passskuListIdandskuIdtogetOrganizationConfigskuListId(from props) andskuId(fromSkuChildrenContext) when resolving the cart URL on redirect, enabling org-config URL templates with:sku_list_idand:sku_idplaceholders to resolve correctly♻️ Refactor:
HostedCart— resolve order ID once viaresolvedOrderIdorder?.id ?? localStorage.getItem(persistKey)into a singleresolvedOrderIdvariable at the top of the effect🐛 Fix:
MyAccountLink— addreturnUrlprop (Closes #687)returnUrl?: stringprop to enable the "back to store" link and logout redirect in mfe-my-accountgetApplicationLink()for the statichrefgetOrganizationConfigparams sogetMfeConfigincludes it inconfig.links.my_account— following the same pattern asMyIdentityLink🐛 Fix: HostedCart — minicart glitch on first visit (Closes #686)
Root cause: On first visit with no orderId,
createOrder()is async. After the cart was opened viasetOpen(true)(300ms timer), iforder?.idupdated in context afterward, the effect re-ran andopen=false, isOpen=truetriggeredsetOpen(false), closing the cart.Fixes:
prevOpenRefto only callsetOpenwhen theopenprop itself changes, not on unrelated effect re-runsunsubscribe("open-cart", () => {})was passing a new anonymous function so the listener was never removed; now uses a namedopenCartHandlershared by bothsubscribeandunsubscribe♻️ Refactor: MyAccountLink — useEffect pattern (like MyIdentityLink)
Replace synchronous
href+onClickhandler with auseEffectthat resolves org config on mount and setshrefvia state, falling back togetApplicationLinkwhen no org config link is available.