|  | diff --git a/Model/Product/ProductFrontendAction/Synchronizer.php b/Model/Product/ProductFrontendAction/Synchronizer.php | 
        
          |  | index 7a1926c..331c667 100644 | 
        
          |  | --- a/Model/Product/ProductFrontendAction/Synchronizer.php | 
        
          |  | +++ b/Model/Product/ProductFrontendAction/Synchronizer.php | 
        
          |  | @@ -138,7 +138,9 @@ class Synchronizer | 
        
          |  | $productIds = []; | 
        
          |  |  | 
        
          |  | foreach ($actions as $action) { | 
        
          |  | -            $productIds[] = $action['product_id']; | 
        
          |  | +            if (isset($action['product_id']) && is_int($action['product_id'])) { | 
        
          |  | +                $productIds[] = $action['product_id']; | 
        
          |  | +            } | 
        
          |  | } | 
        
          |  |  | 
        
          |  | return $productIds; | 
        
          |  | @@ -159,33 +161,37 @@ class Synchronizer | 
        
          |  | $customerId = $this->session->getCustomerId(); | 
        
          |  | $visitorId = $this->visitor->getId(); | 
        
          |  | $collection = $this->getActionsByType($typeId); | 
        
          |  | -        $collection->addFieldToFilter('product_id', $this->getProductIdsByActions($productsData)); | 
        
          |  | - | 
        
          |  | -        /** | 
        
          |  | -         * Note that collection is also filtered by visitor id and customer id | 
        
          |  | -         * This collection shouldnt be flushed when visitor has products and then login | 
        
          |  | -         * It can remove only products for visitor, or only products for customer | 
        
          |  | -         * | 
        
          |  | -         * ['product_id' => 'added_at'] | 
        
          |  | -         * @var ProductFrontendActionInterface $item | 
        
          |  | -         */ | 
        
          |  | -        foreach ($collection as $item) { | 
        
          |  | -            $this->entityManager->delete($item); | 
        
          |  | -        } | 
        
          |  | - | 
        
          |  | -        foreach ($productsData as $productId => $productData) { | 
        
          |  | -            /** @var ProductFrontendActionInterface $action */ | 
        
          |  | -            $action = $this->productFrontendActionFactory->create([ | 
        
          |  | -                'data' => [ | 
        
          |  | -                    'visitor_id' => $customerId ? null : $visitorId, | 
        
          |  | -                    'customer_id' => $this->session->getCustomerId(), | 
        
          |  | -                    'added_at' => $productData['added_at'], | 
        
          |  | -                    'product_id' => $productId, | 
        
          |  | -                    'type_id' => $typeId | 
        
          |  | -                ] | 
        
          |  | -            ]); | 
        
          |  | - | 
        
          |  | -            $this->entityManager->save($action); | 
        
          |  | +        $productIds = $this->getProductIdsByActions($productsData); | 
        
          |  | + | 
        
          |  | +        if ($productIds) { | 
        
          |  | +            $collection->addFieldToFilter('product_id', $productIds); | 
        
          |  | + | 
        
          |  | +            /** | 
        
          |  | +             * Note that collection is also filtered by visitor id and customer id | 
        
          |  | +             * This collection shouldn't be flushed when visitor has products and then login | 
        
          |  | +             * It can remove only products for visitor, or only products for customer | 
        
          |  | +             * | 
        
          |  | +             * ['product_id' => 'added_at'] | 
        
          |  | +             * @var ProductFrontendActionInterface $item | 
        
          |  | +             */ | 
        
          |  | +            foreach ($collection as $item) { | 
        
          |  | +                $this->entityManager->delete($item); | 
        
          |  | +            } | 
        
          |  | + | 
        
          |  | +            foreach ($productsData as $productId => $productData) { | 
        
          |  | +                /** @var ProductFrontendActionInterface $action */ | 
        
          |  | +                $action = $this->productFrontendActionFactory->create([ | 
        
          |  | +                    'data' => [ | 
        
          |  | +                        'visitor_id' => $customerId ? null : $visitorId, | 
        
          |  | +                        'customer_id' => $this->session->getCustomerId(), | 
        
          |  | +                        'added_at' => $productData['added_at'], | 
        
          |  | +                        'product_id' => $productId, | 
        
          |  | +                        'type_id' => $typeId | 
        
          |  | +                    ] | 
        
          |  | +                ]); | 
        
          |  | + | 
        
          |  | +                $this->entityManager->save($action); | 
        
          |  | +            } | 
        
          |  | } | 
        
          |  | } |