<?php
/**
 * Magento 2 Google Analytics 4 (GA4) GTM
 *
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Anowave license that is
 * available through the world-wide-web at this URL:
 * https://www.anowave.com/license-agreement/
 *
 * DISCLAIMER
 *
 * Do not edit or add to this file if you wish to upgrade this extension to newer
 * version in the future.
 *
 * @category 	Anowave
 * @package 	Anowave_Ec
 * @copyright 	Copyright (c) 2026 Anowave (https://www.anowave.com/)
 * @license  	https://www.anowave.com/license-agreement/
 */

namespace Anowave\Ec\Registry;

use Magento\Catalog\Api\Data\CategoryInterface;
use Magento\Catalog\Api\Data\CategoryInterfaceFactory;

/**
 * Class CurrentCategory
 *
 * Get current category without registry
 */
class CurrentCategory
{
    /**
     * @var CategoryInterface
     */
    private $category;

    /**
     * @var CategoryInterfaceFactory
     */
    private $categoryFactory;

    /**
     * CurrentCategory constructor.
     *
     * @param CategoryInterfaceFactory $categoryFactory
     */
    public function __construct
    (
        CategoryInterfaceFactory $categoryFactory
    ) 
    {
        $this->categoryFactory = $categoryFactory;
    }

    /**
     * Setter
     *
     * @param CategoryInterface $category
     */
    public function set(CategoryInterface $category): void
    {
        $this->category = $category;
    }

    /**
     * Getter
     *
     * @return CategoryInterface
     */
    public function get(): CategoryInterface
    {
        return $this->category ?? $this->createCategory();
    }

    /**
     * Product factory
     *
     * @return CategoryInterface
     */
    private function createCategory(): CategoryInterface
    {
        return $this->categoryFactory->create();
    }
}