From f64f32fc464bb6f5b66be56446bb4b59bff84fc5 Mon Sep 17 00:00:00 2001 From: Sebastian Schreiber Date: Fri, 8 Dec 2023 12:14:32 +0100 Subject: [PATCH] TASK: Remove dashboard functionality --- .../Controller/FailedMessageController.php | 50 ------ .../Widgets/Dto/MessageSpecification.php | 54 ------- .../Widgets/ListOfFailedMessagesWidget.php | 63 -------- .../Provider/FailedMessagesDataProvider.php | 30 ---- .../Widgets/Serializer/JsonSerializer.php | 24 --- .../Compiler/FailureReceiverPass.php | 28 ---- Classes/Domain/Dto/FailedMessage.php | 136 ----------------- .../Repository/FailedMessageRepository.php | 142 ------------------ .../Transport/DoctrineTransportFactory.php | 4 +- Configuration/Backend/AjaxRoutes.php | 23 --- Configuration/Services.php | 27 ---- Configuration/TypoScript/setup.typoscript | 4 - Resources/Private/Language/locallang.xlf | 63 -------- .../Widget/ListOfFailedMessagesWidget.html | 79 ---------- Resources/Public/Icons/failed-messages.svg | 53 ------- .../Public/JavaScript/DeleteFailedMessage.js | 37 ----- .../JavaScript/RefreshFailedMessages.js | 13 -- .../Public/JavaScript/RetryFailedMessage.js | 37 ----- .../FailedMessageRepositoryTest.php | 87 ----------- composer.json | 3 +- ext_localconf.php | 13 -- 21 files changed, 3 insertions(+), 967 deletions(-) delete mode 100644 Classes/Dashboard/Widgets/Controller/FailedMessageController.php delete mode 100644 Classes/Dashboard/Widgets/Dto/MessageSpecification.php delete mode 100644 Classes/Dashboard/Widgets/ListOfFailedMessagesWidget.php delete mode 100644 Classes/Dashboard/Widgets/Provider/FailedMessagesDataProvider.php delete mode 100644 Classes/Dashboard/Widgets/Serializer/JsonSerializer.php delete mode 100644 Classes/DependencyInjection/Compiler/FailureReceiverPass.php delete mode 100644 Classes/Domain/Dto/FailedMessage.php delete mode 100644 Classes/Repository/FailedMessageRepository.php delete mode 100644 Configuration/Backend/AjaxRoutes.php delete mode 100644 Configuration/TypoScript/setup.typoscript delete mode 100644 Resources/Private/Language/locallang.xlf delete mode 100644 Resources/Private/Templates/Widget/ListOfFailedMessagesWidget.html delete mode 100644 Resources/Public/Icons/failed-messages.svg delete mode 100644 Resources/Public/JavaScript/DeleteFailedMessage.js delete mode 100644 Resources/Public/JavaScript/RefreshFailedMessages.js delete mode 100644 Resources/Public/JavaScript/RetryFailedMessage.js delete mode 100644 Tests/Functional/Repository/FailedMessageRepositoryTest.php diff --git a/Classes/Dashboard/Widgets/Controller/FailedMessageController.php b/Classes/Dashboard/Widgets/Controller/FailedMessageController.php deleted file mode 100644 index 8a95dc4..0000000 --- a/Classes/Dashboard/Widgets/Controller/FailedMessageController.php +++ /dev/null @@ -1,50 +0,0 @@ -failedMessageRepository = $failedMessageRepository; - $this->jsonSerializer = $jsonSerializer; - } - - public function deleteMessageAction(ServerRequestInterface $request): ResponseInterface - { - $messageSpecification = $this->jsonSerializer->decode($request->getBody()->__toString()); - $this->failedMessageRepository->removeMessage($messageSpecification); - return new JsonResponse([ - 'result' => 1, - ]); - } - - public function retryMessageAction(ServerRequestInterface $request): ResponseInterface - { - $messageSpecification = $this->jsonSerializer->decode($request->getBody()->__toString()); - $this->failedMessageRepository->retryMessage($messageSpecification); - return new JsonResponse([ - 'result' => 1, - ]); - } -} diff --git a/Classes/Dashboard/Widgets/Dto/MessageSpecification.php b/Classes/Dashboard/Widgets/Dto/MessageSpecification.php deleted file mode 100644 index d9bf67e..0000000 --- a/Classes/Dashboard/Widgets/Dto/MessageSpecification.php +++ /dev/null @@ -1,54 +0,0 @@ -id = $id; - $this->transport = $transport; - } - - public static function fromArray(array $array): self - { - Assert::keyExists($array, 'id'); - Assert::keyExists($array, 'transport'); - - return new self($array['id'], $array['transport']); - } - - /** - * @return string|int - */ - public function getId() - { - return $this->id; - } - - public function getTransport(): string - { - return $this->transport; - } -} diff --git a/Classes/Dashboard/Widgets/ListOfFailedMessagesWidget.php b/Classes/Dashboard/Widgets/ListOfFailedMessagesWidget.php deleted file mode 100644 index cccbfca..0000000 --- a/Classes/Dashboard/Widgets/ListOfFailedMessagesWidget.php +++ /dev/null @@ -1,63 +0,0 @@ -configuration = $configuration; - $this->dataProvider = $dataProvider; - $this->view = $view; - $this->options = $options; - } - - public function renderWidgetContent(): string - { - $this->view->setTemplate('Widget/ListOfFailedMessagesWidget'); - $this->view->assignMultiple([ - 'configuration' => $this->configuration, - 'failedMessages' => $this->dataProvider->getItems(), - 'options' => $this->options, - ]); - - return $this->view->render(); - } - - public function getOptions(): array - { - return $this->options; - } - - public function getRequireJsModules(): array - { - return ['TYPO3/CMS/T3Messenger/RetryFailedMessage', 'TYPO3/CMS/T3Messenger/DeleteFailedMessage']; - } -} diff --git a/Classes/Dashboard/Widgets/Provider/FailedMessagesDataProvider.php b/Classes/Dashboard/Widgets/Provider/FailedMessagesDataProvider.php deleted file mode 100644 index fc145f4..0000000 --- a/Classes/Dashboard/Widgets/Provider/FailedMessagesDataProvider.php +++ /dev/null @@ -1,30 +0,0 @@ -failedMessageRepository = $failedMessageRepository; - } - - public function getItems(): array - { - return $this->failedMessageRepository->list(); - } -} diff --git a/Classes/Dashboard/Widgets/Serializer/JsonSerializer.php b/Classes/Dashboard/Widgets/Serializer/JsonSerializer.php deleted file mode 100644 index 2547c88..0000000 --- a/Classes/Dashboard/Widgets/Serializer/JsonSerializer.php +++ /dev/null @@ -1,24 +0,0 @@ -getDefinition(FailedMessageRepository::class); - $failedMessagesShowCommandDefinition = $container->getDefinition( - 'console.command.messenger_failed_messages_show' - ); - $failureMessageRepositoryDefinition->replaceArgument(0, $failedMessagesShowCommandDefinition->getArgument(1)); - } -} diff --git a/Classes/Domain/Dto/FailedMessage.php b/Classes/Domain/Dto/FailedMessage.php deleted file mode 100644 index 5126423..0000000 --- a/Classes/Domain/Dto/FailedMessage.php +++ /dev/null @@ -1,136 +0,0 @@ -message = $message; - $this->errorMessage = $errorMessage; - $this->redelivered = $redelivered; - $this->retryCount = $retryCount; - $this->messageId = $messageId; - $this->transportName = $transportName; - $this->shortMessageClass = $shortMessageClass; - } - - public function getShortMessageClass(): string - { - return $this->shortMessageClass; - } - - /** - * @return mixed - */ - public function getMessageId() - { - return $this->messageId; - } - - /** - * @return class-string - */ - public function getMessage(): string - { - return $this->message; - } - - public function getRedelivered(): DateTimeInterface - { - return $this->redelivered; - } - - public function getErrorMessage(): string - { - return $this->errorMessage; - } - - public function getTransportName(): string - { - return $this->transportName; - } - - public function getRetryCount(): int - { - return $this->retryCount; - } - - public static function createFromEnvelope(Envelope $failedMessage, string $transportName): self - { - $errorDetailsStamp = $failedMessage->last(ErrorDetailsStamp::class); - - if (! $errorDetailsStamp instanceof ErrorDetailsStamp) { - throw new \UnexpectedValueException('No error details stamp given'); - } - - $errorMessage = $errorDetailsStamp->getExceptionMessage(); - - $redeliveryStamp = $failedMessage->last(RedeliveryStamp::class); - - if (! $redeliveryStamp instanceof RedeliveryStamp) { - throw new \UnexpectedValueException('No redelivery stamp given'); - } - - $transportMessageIdStamp = $failedMessage->last(TransportMessageIdStamp::class); - if (! $transportMessageIdStamp instanceof TransportMessageIdStamp) { - throw new \UnexpectedValueException('No transport message id stamp given'); - } - - return new self( - get_class($failedMessage->getMessage()), - (new \ReflectionClass($failedMessage->getMessage()))->getShortName(), - $errorMessage, - $redeliveryStamp->getRedeliveredAt(), - $redeliveryStamp->getRetryCount(), - $transportMessageIdStamp->getId(), - $transportName - ); - } -} diff --git a/Classes/Repository/FailedMessageRepository.php b/Classes/Repository/FailedMessageRepository.php deleted file mode 100644 index fe319ac..0000000 --- a/Classes/Repository/FailedMessageRepository.php +++ /dev/null @@ -1,142 +0,0 @@ -failureTransports = $failureTransports; - $this->messageBus = $messageBus; - $this->eventDispatcher = $eventDispatcher; - $this->logger = $logger; - } - - /** - * @return FailedMessage[] - */ - public function list(): array - { - $allFailedMessages = []; - foreach ($this->failureTransports->getProvidedServices() as $serviceId => $_) { - try { - $failureTransport = $this->getReceiver($serviceId); - } catch (\RuntimeException $runtimeException) { - continue; - } - - $failedMessages = $this->inReverseOrder($failureTransport->all()); - - foreach ($failedMessages as $failedMessage) { - $allFailedMessages[] = FailedMessage::createFromEnvelope($failedMessage, $serviceId); - } - } - - return $allFailedMessages; - } - - public function removeMessage(MessageSpecification $messageSpecification): void - { - $failureTransport = $this->getReceiver($messageSpecification->getTransport()); - - $envelope = $this->findMessage($messageSpecification->getId(), $failureTransport); - - $failureTransport->reject($envelope); - } - - public function retryMessage(MessageSpecification $messageSpecification): void - { - $failureTransport = $this->getReceiver($messageSpecification->getTransport()); - - $envelope = $this->findMessage($messageSpecification->getId(), $failureTransport); - - $singleReceiver = new SingleMessageReceiver($failureTransport, $envelope); - - $subscriber = new StopWorkerOnMessageLimitListener(1); - $this->eventDispatcher->addSubscriber($subscriber); - - $worker = new Worker( - [ - $messageSpecification->getTransport() => $singleReceiver, - ], - $this->messageBus, - $this->eventDispatcher, - $this->logger - ); - - $worker->run(); - $this->eventDispatcher->removeSubscriber($subscriber); - } - - /** - * @param Envelope[] $failedMessages - * - * @return Envelope[]; - */ - private function inReverseOrder(iterable $failedMessages): array - { - if (! is_array($failedMessages)) { - $failedMessages = iterator_to_array($failedMessages); - } - - return array_reverse($failedMessages); - } - - private function getReceiver(string $transport): ListableReceiverInterface - { - $failureTransport = $this->failureTransports->get($transport); - - if (! $failureTransport instanceof ListableReceiverInterface) { - throw new RuntimeException(sprintf( - 'The "%s" receiver does not support removing specific messages.', - $transport - )); - } - - return $failureTransport; - } - - /** - * @param string|int $messageId - */ - private function findMessage($messageId, ListableReceiverInterface $failureTransport): Envelope - { - $envelope = $failureTransport->find($messageId); - if ($envelope === null) { - throw new RuntimeException(sprintf('The message with id "%s" was not found.', $messageId)); - } - - return $envelope; - } -} diff --git a/Classes/Transport/DoctrineTransportFactory.php b/Classes/Transport/DoctrineTransportFactory.php index b97fc16..eaece8a 100644 --- a/Classes/Transport/DoctrineTransportFactory.php +++ b/Classes/Transport/DoctrineTransportFactory.php @@ -12,7 +12,7 @@ namespace Ssch\T3Messenger\Transport; use Doctrine\DBAL\DriverManager; -use Doctrine\DBAL\Platforms\PostgreSQLPlatform; +use Doctrine\DBAL\Platforms\PostgreSqlPlatform; use Doctrine\DBAL\Types\Type; use Symfony\Component\Messenger\Bridge\Doctrine\Transport\Connection; use Symfony\Component\Messenger\Bridge\Doctrine\Transport\DoctrineTransport; @@ -50,7 +50,7 @@ public function createTransport(string $dsn, array $options, SerializerInterface try { $driverConnection = $this->getConnectionByName($configuration['connection']); - if ($useNotify === true && $driverConnection->getDatabasePlatform() instanceof PostgreSQLPlatform) { + if ($useNotify === true && $driverConnection->getDatabasePlatform() instanceof PostgreSqlPlatform) { $connection = new PostgreSqlConnection($configuration, $driverConnection); } else { $connection = new Connection($configuration, $driverConnection); diff --git a/Configuration/Backend/AjaxRoutes.php b/Configuration/Backend/AjaxRoutes.php deleted file mode 100644 index d3158f2..0000000 --- a/Configuration/Backend/AjaxRoutes.php +++ /dev/null @@ -1,23 +0,0 @@ - [ - 'path' => '/t3-messenger/failed-messages/delete', - 'target' => FailedMessageController::class . '::deleteMessageAction', - ], - 't3_messenger_failed_messages_retry' => [ - 'path' => '/t3-messenger/failed-messages/retry', - 'target' => FailedMessageController::class . '::retryMessageAction', - ], -]; diff --git a/Configuration/Services.php b/Configuration/Services.php index b9a807c..acf5689 100644 --- a/Configuration/Services.php +++ b/Configuration/Services.php @@ -15,9 +15,6 @@ use Ssch\T3Messenger\Command\ShowConfigurationCommand; use Ssch\T3Messenger\CommandToHandlerMapper; use Ssch\T3Messenger\ConfigurationModuleProvider\MessengerProvider; -use Ssch\T3Messenger\Dashboard\Widgets\ListOfFailedMessagesWidget; -use Ssch\T3Messenger\Dashboard\Widgets\Provider\FailedMessagesDataProvider; -use Ssch\T3Messenger\DependencyInjection\Compiler\FailureReceiverPass; use Ssch\T3Messenger\DependencyInjection\Compiler\MessengerAlterTableListenerPass; use Ssch\T3Messenger\DependencyInjection\Compiler\MessengerCommandToHandlerMapperPass; use Ssch\T3Messenger\DependencyInjection\Compiler\MessengerMailerPass; @@ -31,7 +28,6 @@ use Ssch\T3Messenger\Middleware\ServerRequestContextMiddleware; use Ssch\T3Messenger\Middleware\ValidationMiddleware; use Ssch\T3Messenger\Mime\BodyRenderer; -use Ssch\T3Messenger\Repository\FailedMessageRepository; use Symfony\Component\Console\ConsoleEvents; use Symfony\Component\DependencyInjection\ChildDefinition; use Symfony\Component\DependencyInjection\Compiler\PassConfig; @@ -419,28 +415,6 @@ static function (ChildDefinition $definition, AsMessageHandler $attribute): void 'command' => 't3_messenger:show-configuration', ]); - // Dashboard Integration - $services->set(FailedMessageRepository::class)->args( - [abstract_arg('failure_transports'), service('event_dispatcher')] - ); - $services - ->set('dashboard.widget.failedMessages') - ->class(ListOfFailedMessagesWidget::class) - ->arg('$dataProvider', service(FailedMessagesDataProvider::class)) - ->arg('$view', service('dashboard.views.widget')) - ->tag( - 'dashboard.widget', - [ - 'identifier' => 'failedMessages', - 'groupNames' => 'news', - 'title' => 'LLL:EXT:t3_messenger/Resources/Private/Language/locallang.xlf:widgets.failedMessages.title', - 'description' => 'LLL:EXT:t3_messenger/Resources/Private/Language/locallang.xlf:widgets.failedMessages.description', - 'iconIdentifier' => 'tx-messenger-failed-messages-icon', - 'height' => 'large', - 'width' => 'large', - ] - ); - // must be registered before removing private services as some might be listeners/subscribers // but as late as possible to get resolved parameters $containerBuilder->addCompilerPass($registerListenersPass, PassConfig::TYPE_BEFORE_REMOVING); @@ -450,5 +424,4 @@ static function (ChildDefinition $definition, AsMessageHandler $attribute): void $containerBuilder->addCompilerPass(new ConsoleCommandPass('console.command')); $containerBuilder->addCompilerPass(new MessengerCommandToHandlerMapperPass()); $containerBuilder->addCompilerPass(new MessengerAlterTableListenerPass()); - $containerBuilder->addCompilerPass(new FailureReceiverPass()); }; diff --git a/Configuration/TypoScript/setup.typoscript b/Configuration/TypoScript/setup.typoscript deleted file mode 100644 index c9112f7..0000000 --- a/Configuration/TypoScript/setup.typoscript +++ /dev/null @@ -1,4 +0,0 @@ -module.tx_dashboard.view { - templateRootPaths.110 = EXT:t3_messenger/Resources/Private/Templates - partialRootPaths.110 = EXT:t3_messenger/Resources/Private/Partials -} diff --git a/Resources/Private/Language/locallang.xlf b/Resources/Private/Language/locallang.xlf deleted file mode 100644 index f9a8e23..0000000 --- a/Resources/Private/Language/locallang.xlf +++ /dev/null @@ -1,63 +0,0 @@ - -> - -
- - - Recently failed messages - - - Shows a list of recently failed messages. - - - Message - - - Error Message - - - Redelivered - - - Retries - - - Actions - - - No messages found - - - Delete - - - Remove Message - - - Are you sure you want to remove this message? - - - Delete - - - Close - - - Retry - - - Retry Message - - - Are you sure you want to retry this message? - - - Retry - - - Close - - - - diff --git a/Resources/Private/Templates/Widget/ListOfFailedMessagesWidget.html b/Resources/Private/Templates/Widget/ListOfFailedMessagesWidget.html deleted file mode 100644 index 8a66838..0000000 --- a/Resources/Private/Templates/Widget/ListOfFailedMessagesWidget.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - -
Id
- {failedMessage.messageId} - - - {failedMessage.shortMessageClass} - - - {failedMessage.errorMessage} - - {failedMessage.redelivered -> f:format.date(format: 'd.m.Y - H:i:s')} - - {failedMessage.retryCount} - - - - - - - -
-
-
- -
-
-

- -

-
-
-
-
-
- diff --git a/Resources/Public/Icons/failed-messages.svg b/Resources/Public/Icons/failed-messages.svg deleted file mode 100644 index 664d042..0000000 --- a/Resources/Public/Icons/failed-messages.svg +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Resources/Public/JavaScript/DeleteFailedMessage.js b/Resources/Public/JavaScript/DeleteFailedMessage.js deleted file mode 100644 index d2ede62..0000000 --- a/Resources/Public/JavaScript/DeleteFailedMessage.js +++ /dev/null @@ -1,37 +0,0 @@ -define(['require', 'TYPO3/CMS/Backend/Modal', "TYPO3/CMS/Core/Event/RegularEvent", "TYPO3/CMS/Backend/Enum/Severity", "TYPO3/CMS/Core/Ajax/AjaxRequest", "TYPO3/CMS/T3Messenger/RefreshFailedMessages"], function (require, Modal, Event, Severity, AjaxRequest, RefreshFailedMessages) { - "use strict"; - return new class { - constructor() { - this.selector = ".js-t3-messenger-remove-message", this.initialize() - } - - initialize() { - new Event("click", (function (e) { - e.preventDefault(); - var anchor = this; - Modal.confirm(this.dataset.modalTitle, this.dataset.modalQuestion, Severity.SeverityEnum.warning, [{ - text: this.dataset.modalCancel, - active: !0, - btnClass: "btn-default", - name: "cancel" - }, { - text: this.dataset.modalOk, - btnClass: "btn-warning", - name: "delete" - }]).on("button.clicked", function (e) { - if ("delete" === e.target.getAttribute("name")) { - var payload = {'id': anchor.dataset.messageId, 'transport': anchor.dataset.messageTransport}; - new AjaxRequest(TYPO3.settings.ajaxUrls.t3_messenger_failed_messages_delete) - .delete(JSON.stringify(payload)) - .then(async function () { - Modal.dismiss(); - RefreshFailedMessages.refresh(); - }); - } else { - Modal.dismiss(); - } - }) - })).delegateTo(document, this.selector) - } - } -}); diff --git a/Resources/Public/JavaScript/RefreshFailedMessages.js b/Resources/Public/JavaScript/RefreshFailedMessages.js deleted file mode 100644 index 77b4364..0000000 --- a/Resources/Public/JavaScript/RefreshFailedMessages.js +++ /dev/null @@ -1,13 +0,0 @@ -define(['require', "TYPO3/CMS/Dashboard/WidgetContentCollector"], function (require, DashboardWidget) { - "use strict"; - return new class { - constructor() { - - } - - refresh() { - const failedMessages = document.querySelector('[data-widget-key="failedMessages"]'); - DashboardWidget.getContentForWidget(failedMessages); - } - } -}); diff --git a/Resources/Public/JavaScript/RetryFailedMessage.js b/Resources/Public/JavaScript/RetryFailedMessage.js deleted file mode 100644 index 7d2ec85..0000000 --- a/Resources/Public/JavaScript/RetryFailedMessage.js +++ /dev/null @@ -1,37 +0,0 @@ -define(['require', 'TYPO3/CMS/Backend/Modal', "TYPO3/CMS/Core/Event/RegularEvent", "TYPO3/CMS/Backend/Enum/Severity", "TYPO3/CMS/Core/Ajax/AjaxRequest", "TYPO3/CMS/T3Messenger/RefreshFailedMessages"], function (require, Modal, Event, Severity, AjaxRequest, RefreshWidget) { - "use strict"; - return new class { - constructor() { - this.selector = ".js-t3-messenger-retry-message", this.initialize() - } - - initialize() { - new Event("click", (function (e) { - e.preventDefault(); - var anchor = this; - Modal.confirm(this.dataset.modalTitle, this.dataset.modalQuestion, Severity.SeverityEnum.warning, [{ - text: this.dataset.modalCancel, - active: !0, - btnClass: "btn-default", - name: "cancel" - }, { - text: this.dataset.modalOk, - btnClass: "btn-warning", - name: "retry" - }]).on("button.clicked", function (e) { - if ("retry" === e.target.getAttribute("name")) { - var payload = {'id': anchor.dataset.messageId, 'transport': anchor.dataset.messageTransport}; - new AjaxRequest(TYPO3.settings.ajaxUrls.t3_messenger_failed_messages_retry) - .post(JSON.stringify(payload)) - .then(async function () { - Modal.dismiss(); - RefreshWidget.refresh(); - }); - } else { - Modal.dismiss(); - } - }) - })).delegateTo(document, this.selector) - } - } -}); diff --git a/Tests/Functional/Repository/FailedMessageRepositoryTest.php b/Tests/Functional/Repository/FailedMessageRepositoryTest.php deleted file mode 100644 index 0ed7483..0000000 --- a/Tests/Functional/Repository/FailedMessageRepositoryTest.php +++ /dev/null @@ -1,87 +0,0 @@ -testExtensionsToLoad = [ - 'typo3conf/ext/typo3_psr_cache_adapter', - 'typo3conf/ext/t3_messenger', - 'typo3conf/ext/t3_messenger/Tests/Functional/Fixtures/Extensions/t3_messenger_test', - ]; - parent::setUp(); - $this->subject = $this->get(FailedMessageRepository::class); - $this->messageBus = $this->get(MessageBusInterface::class); - } - - public function test(): void - { - // Arrange - $this->messageBus->dispatch(new MyFailingCommand('Add to failed queue')); - $this->runWorker(); - $this->messageBus->dispatch(new MyOtherFailingCommand('Add to failed queue')); - $this->runWorker(); - - // Act - $failedMessages = $this->subject->list(); - - // Assert - $failedMessagesInAssertion = []; - foreach ($failedMessages as $failedMessage) { - $failedMessagesInAssertion[] = [ - 'class' => $failedMessage->getMessage(), - 'error_message' => $failedMessage->getErrorMessage(), - ]; - } - - self::assertCount(2, $failedMessages); - self::assertSame([ - [ - 'class' => MyOtherFailingCommand::class, - 'error_message' => 'Failing by intention', - ], - [ - 'class' => MyFailingCommand::class, - 'error_message' => 'Failing by intention', - ], - ], $failedMessagesInAssertion); - } - - private function runWorker(): void - { - $receivers = [ - 'async' => $this->get('messenger.transport.async'), - ]; - - /** @var EventDispatcher $eventDispatcher */ - $eventDispatcher = $this->get('event_dispatcher'); - $eventDispatcher->addSubscriber(new StopWorkerOnFailureLimitListener(1)); - - $worker = new Worker($receivers, $this->get('command.bus'), $eventDispatcher); - $worker->run(); - } -} diff --git a/composer.json b/composer.json index f790d1d..3579695 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,6 @@ "php": "^7.4 || ^8.0", "typo3/cms-core": "^10.4 || ^11.5 || ^12.4", "typo3/cms-extbase": "^10.4 || ^11.5 || ^12.4", - "typo3/cms-dashboard": "^10.4 || ^11.5 || ^12.4", "symfony/messenger": "^5.0 || ^6.2", "symfony/options-resolver": "^5.0 || ^6.2", "symfony/doctrine-messenger": "^5.0 || ^6.2", @@ -91,7 +90,7 @@ }, "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" }, "typo3/cms": { "extension-key": "t3_messenger", diff --git a/ext_localconf.php b/ext_localconf.php index f1706df..a0b7b72 100644 --- a/ext_localconf.php +++ b/ext_localconf.php @@ -13,17 +13,4 @@ 'groups' => ['system'], ]; } - - \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScriptSetup( - "@import 'EXT:t3_messenger/Configuration/TypoScript/setup.typoscript'" - ); - - $iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class); - $iconRegistry->registerIcon( - 'tx-messenger-failed-messages-icon', - \TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class, - [ - 'source' => 'EXT:t3_messenger/Resources/Public/Icons/failed-messages.svg', - ] - ); });