<?php

namespace TbiBank\FusionPay\Observer;

use Magento\Framework\App\Cache\TypeListInterface;
use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;
use Magento\PageCache\Model\Cache\Type as PageCacheType;

/**
 * Cleans the full page cache once the Fusion Pay RO settings are saved.
 *
 * Bound to the config save postdispatch so it runs after Magento_PageCache has only flagged
 * full_page as invalidated; cleaning it here drops the stale pages and that flag together.
 */
class CleanPageCacheAfterSettingsSave implements ObserverInterface
{
    private const SETTINGS_SECTION = 'tbi_settings';

    /**
     * @var TypeListInterface
     */
    private $cacheTypeList;

    public function __construct(TypeListInterface $cacheTypeList)
    {
        $this->cacheTypeList = $cacheTypeList;
    }

    public function execute(Observer $observer)
    {
        if ($observer->getEvent()->getRequest()->getParam('section') !== self::SETTINGS_SECTION) {
            return;
        }

        $this->cacheTypeList->cleanType(PageCacheType::TYPE_IDENTIFIER);
    }
}
