<?php

namespace Wallabag\Controller\Import;

use Craue\ConfigBundle\Util\Config;
use OldSound\RabbitMqBundle\RabbitMq\Producer as RabbitMqProducer;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Contracts\Translation\TranslatorInterface;
use Wallabag\Import\ChromeImport;
use Wallabag\Redis\Producer as RedisProducer;

class ChromeController extends BrowserController
{
    public function __construct(
        private readonly ChromeImport $chromeImport,
        private readonly Config $craueConfig,
        private readonly RabbitMqProducer $rabbitMqProducer,
        private readonly RedisProducer $redisProducer,
        array $allowMimetypes,
        string $resourceDir,
    ) {
        parent::__construct($allowMimetypes, $resourceDir);
    }

    #[Route(path: '/import/chrome', name: 'import_chrome', methods: ['GET', 'POST'])]
    #[IsGranted('IMPORT_ENTRIES')]
    public function indexAction(Request $request, TranslatorInterface $translator)
    {
        return parent::indexAction($request, $translator);
    }

    protected function getImportService()
    {
        if ($this->craueConfig->get('import_with_rabbitmq')) {
            $this->chromeImport->setProducer($this->rabbitMqProducer);
        } elseif ($this->craueConfig->get('import_with_redis')) {
            $this->chromeImport->setProducer($this->redisProducer);
        }

        return $this->chromeImport;
    }

    protected function getImportTemplate()
    {
        return 'Import/Chrome/index.html.twig';
    }
}
