<?php
declare(strict_types=1);

namespace FiloBlu\Refilo\Plugins\Newsletter;

use FiloBlu\Core\Helper\Url as CoreUrl;
use Magento\Newsletter\Model\Subscriber;

/**
 * Sui setup con storefront headless la rotta
 * "newsletter/subscriber/unsubscribe" non è esposta dal frontend e
 * restituisce 404. Riscrive l'URL di disiscrizione sul dominio admin
 * Magento, dove la rotta classica esiste.
 *
 * Il gating del fix è implicito-per-presenza: questo modulo (mod2-refilo)
 * viene installato solo sugli ambienti headless, quindi se il plugin è
 * caricato significa che il fix serve. Non c'è (e non serve) un flag
 * system config per accenderlo/spegnerlo.
 *
 * Gemello concettuale di afterGetConfirmationLink in
 * mod2-newsletter/Model/Plugin/Subscriber.php.
 *
 * https://filoblu.atlassian.net/browse/ANTMRGEST-1564
 *
 * @see \FiloBlu\Core\Helper\Url::replaceWithAdminDomain
 */
class UnsubscriptionLink
{
    /**
     * @var CoreUrl
     */
    private $coreUrl;

    public function __construct(CoreUrl $coreUrl)
    {
        $this->coreUrl = $coreUrl;
    }

    public function afterGetUnsubscriptionLink(
        Subscriber $subject,
        string $result
    ): string {
        return $this->coreUrl->replaceWithAdminDomain($result);
    }
}
