Fix: Force current currency reload on currency code change #40348
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.
Description (*)
Fixed an issue where calling
setCurrentCurrencyCode()multiple times did not update the currency returned bygetCurrentCurrency()due to internal caching.Root Cause:
getCurrentCurrency()caches the currency object using the'current_currency'key. WhensetCurrentCurrencyCode()changed the currency code, it didn't clear this cache, causinggetCurrentCurrency()to return stale data.Solution:
Added
unsetData('current_currency')insetCurrentCurrencyCode()to clear the cached currency when the currency code changes, forcinggetCurrentCurrency()to reload the currency based on the new code.Changes:
Store::setCurrentCurrencyCode()to clear cached currencytestSetCurrentCurrencyCodeClearsCachedCurrency()Related Pull Requests
None
Fixed Issues (if relevant)
Manual testing scenarios (*)
$store->setCurrentCurrencyCode('USD')$store->getCurrentCurrency()->getCode()returns'USD'$store->setCurrentCurrencyCode('EUR')$store->getCurrentCurrency()->getCode()returns'EUR'(without this fix, it would still return'USD')Questions or comments
None
Contribution checklist (*)