/** * Calculate count of wishlist items and put value to customer session. * Method called after wishlist modifications and trigger 'wishlist_items_renewed' event. * Depends from configuration. * * @return $this */ public function calculate() { $count = 0; if ($this->getCustomer()) { $collection = $this->getWishlistItemCollection()->setInStockFilter(true); if ($this->scopeConfig->getValue(self::XML_PATH_WISHLIST_LINK_USE_QTY, \Magento\Store\Model\ScopeInterface::SCOPE_STORE)) { $count = $collection->getItemsQty(); } else { $count = $collection->getSize(); } $this->_customerSession->setWishlistDisplayType($this->scopeConfig->getValue(self::XML_PATH_WISHLIST_LINK_USE_QTY, \Magento\Store\Model\ScopeInterface::SCOPE_STORE)); $this->_customerSession->setDisplayOutOfStockProducts($this->scopeConfig->getValue(self::XML_PATH_CATALOGINVENTORY_SHOW_OUT_OF_STOCK, \Magento\Store\Model\ScopeInterface::SCOPE_STORE)); } $this->_customerSession->setWishlistItemCount($count); $this->_eventManager->dispatch('wishlist_items_renewed'); return $this; }