diff --git a/src/CoreShop/Bundle/MessengerBundle/Messenger/MessageDetails.php b/src/CoreShop/Bundle/MessengerBundle/Messenger/MessageDetails.php index 610a5d9d89..a1950ffb1c 100755 --- a/src/CoreShop/Bundle/MessengerBundle/Messenger/MessageDetails.php +++ b/src/CoreShop/Bundle/MessengerBundle/Messenger/MessageDetails.php @@ -24,6 +24,7 @@ public function __construct( private mixed $id, private string $class, private string $serialized, + private ?string $delay = null, ) { } @@ -47,12 +48,18 @@ public function setSerialized(string $serialized): void $this->serialized = $serialized; } + public function getDelay(): ?string + { + return $this->delay; + } + public function jsonSerialize(): mixed { return [ 'id' => $this->id, 'class' => $this->class, 'serialized' => $this->serialized, + 'delay' => $this->delay, ]; } } diff --git a/src/CoreShop/Bundle/MessengerBundle/Messenger/MessageRepository.php b/src/CoreShop/Bundle/MessengerBundle/Messenger/MessageRepository.php index 0f044a44ff..22ad85ae30 100755 --- a/src/CoreShop/Bundle/MessengerBundle/Messenger/MessageRepository.php +++ b/src/CoreShop/Bundle/MessengerBundle/Messenger/MessageRepository.php @@ -18,10 +18,13 @@ namespace CoreShop\Bundle\MessengerBundle\Messenger; +use Carbon\Carbon; +use Carbon\CarbonInterface; use CoreShop\Bundle\MessengerBundle\Event\MessageDetailsEvent; use CoreShop\Bundle\MessengerBundle\Exception\ReceiverNotListableException; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\Messenger\Envelope; +use Symfony\Component\Messenger\Stamp\DelayStamp; use Symfony\Component\Messenger\Stamp\TransportMessageIdStamp; use Symfony\Component\Messenger\Transport\Receiver\ListableReceiverInterface; @@ -52,6 +55,7 @@ public function listMessages(string $receiverName, int $limit = 10): array $this->getMessageId($envelope), $envelope->getMessage()::class, '
' . print_r($envelope->getMessage(), true) . '', + $this->getDelayInfo($envelope), ); /** @var MessageDetailsEvent $event */ @@ -73,4 +77,19 @@ private function getMessageId(Envelope $envelope): mixed return $stamp?->getId(); } + + private function getDelayInfo(Envelope $envelope): ?string + { + /** @var DelayStamp|null $delayStamp */ + $delayStamp = $envelope->last(DelayStamp::class); + + if (null === $delayStamp) { + return null; + } + + $delayMs = $delayStamp->getDelay(); + $diff = Carbon::now()->subMilliseconds($delayMs); + + return Carbon::now()->diffForHumans(other: $diff, syntax: CarbonInterface::DIFF_ABSOLUTE, parts: 2); + } } diff --git a/src/CoreShop/Bundle/MessengerBundle/Resources/public/pimcore/js/list.js b/src/CoreShop/Bundle/MessengerBundle/Resources/public/pimcore/js/list.js index 6181d36dbe..a8210952f8 100644 --- a/src/CoreShop/Bundle/MessengerBundle/Resources/public/pimcore/js/list.js +++ b/src/CoreShop/Bundle/MessengerBundle/Resources/public/pimcore/js/list.js @@ -363,7 +363,7 @@ coreshop.messenger.list = Class.create({ rootProperty: 'data' } }, - fields: ['id', 'class'] + fields: ['id', 'class', 'delay'] }); var grid = new Ext.grid.Panel({ @@ -384,6 +384,10 @@ coreshop.messenger.list = Class.create({ text: t('coreshop_messenger_class'), flex: 1, dataIndex: 'class' + }, { + text: t('coreshop_messenger_delay'), + width: 150, + dataIndex: 'delay' }, { xtype: 'actioncolumn', width: 80, diff --git a/src/CoreShop/Bundle/MessengerBundle/Resources/translations/admin.de.yml b/src/CoreShop/Bundle/MessengerBundle/Resources/translations/admin.de.yml index 94ebf33b84..8e4ea7fad6 100644 --- a/src/CoreShop/Bundle/MessengerBundle/Resources/translations/admin.de.yml +++ b/src/CoreShop/Bundle/MessengerBundle/Resources/translations/admin.de.yml @@ -10,4 +10,5 @@ coreshop_messenger_failed_messages: 'Fehlgeschlagene Nachrichten' coreshop_messenger_pending_messages: 'Ausstehende Nachrichten' coreshop_messenger_receivers: 'Empfänger' coreshop_messenger_info: 'Details' -coreshop_permission_messenger: 'CoreShop: Messenger' \ No newline at end of file +coreshop_messenger_delay: 'Verzögerung' +coreshop_permission_messenger: 'CoreShop: Messenger' diff --git a/src/CoreShop/Bundle/MessengerBundle/Resources/translations/admin.en.yml b/src/CoreShop/Bundle/MessengerBundle/Resources/translations/admin.en.yml index 5c1f54acf2..17a20cf854 100644 --- a/src/CoreShop/Bundle/MessengerBundle/Resources/translations/admin.en.yml +++ b/src/CoreShop/Bundle/MessengerBundle/Resources/translations/admin.en.yml @@ -10,4 +10,5 @@ coreshop_messenger_failed_messages: 'Failed Messages' coreshop_messenger_pending_messages: 'Pending Messages' coreshop_messenger_receivers: 'Receivers' coreshop_messenger_info: 'Details' -coreshop_permission_messenger: 'CoreShop: Messenger' \ No newline at end of file +coreshop_messenger_delay: 'Delay' +coreshop_permission_messenger: 'CoreShop: Messenger'