Skip to content

Commit

Permalink
Remove check for cookie with cart service
Browse files Browse the repository at this point in the history
  • Loading branch information
lukeholder committed Nov 13, 2023
1 parent ab171ff commit 010a661
Showing 1 changed file with 17 additions and 9 deletions.
26 changes: 17 additions & 9 deletions src/services/Carts.php
Original file line number Diff line number Diff line change
Expand Up @@ -87,16 +87,9 @@ public function init()
$this->cartCookie = Craft::cookieConfig($this->cartCookie);

$session = Craft::$app->getSession();
$requestCookies = $request->getCookies();

// If we have a cart cookie, assign it to the cart number.
// Also check pre Commerce 4.0 for a cart number in the session just in case.
if ($requestCookies->has($this->cartCookie['name'])) {
$this->_cartNumber = $requestCookies->getValue($this->cartCookie['name']);
if ($this->_cart && $this->_cart->number != $this->_cartNumber) {
$this->_cart = null;
}
} elseif (($session->getHasSessionId() || $session->getIsActive()) && $session->has('commerce_cart')) {
if (($session->getHasSessionId() || $session->getIsActive()) && $session->has('commerce_cart')) {
$this->setSessionCartNumber($session->get('commerce_cart'));
$session->remove('commerce_cart');
}
Expand All @@ -119,7 +112,7 @@ public function getCart(bool $forceSave = false): Order
// If there is no cart set for this request, and we can't get a cart from session, create one.
if (!isset($this->_cart) && !$this->_cart = $this->_getCart()) {
$this->_cart = new Order();
$this->_cart->number = $this->getSessionCartNumber();
$this->_cart->number = $this->generateCartNumber();
if ($currentUser) {
$this->_cart->setCustomer($currentUser); // Will ensure the email is also set
}
Expand Down Expand Up @@ -268,10 +261,25 @@ public function getHasSessionCartNumber(): bool
*/
protected function getSessionCartNumber(): string
{
if (!Craft::$app->getRequest()->getIsConsoleRequest()) {

$request = Craft::$app->getRequest();
$requestCookies = $request->getCookies();

if (!$this->_cartNumber && $cookieNumber = $requestCookies->getValue($this->cartCookie['name'])) {
$this->_cartNumber = $cookieNumber;
}
}

if ($this->_cartNumber === null) {
$this->_cartNumber = $this->generateCartNumber();
}

/// Just in case the current cart is not the one in session, clear the cached cart.
if($this->_cart && $this->_cart->number !== $this->_cartNumber) {
$this->_cart = null;
}

return $this->_cartNumber;
}

Expand Down

0 comments on commit 010a661

Please sign in to comment.