Message sending is now a job

This commit is contained in:
James Cole
2020-12-05 07:01:26 +01:00
parent deb829dfdb
commit 9576806765
8 changed files with 105 additions and 98 deletions

View File

@@ -22,6 +22,7 @@ declare(strict_types=1);
namespace FireflyIII\Handlers\Events;
use FireflyIII\Events\RequestedSendWebhookMessages;
use FireflyIII\Events\StoredTransactionGroup;
use FireflyIII\Generator\Webhook\MessageGeneratorInterface;
use FireflyIII\Models\TransactionJournal;
@@ -92,6 +93,9 @@ class StoredGroupEventHandler
$engine->setObjects(new Collection([$group]));
// tell the generator to generate the messages
$engine->generateMessages();
// trigger event to send them:
event(new RequestedSendWebhookMessages);
}
}

View File

@@ -22,6 +22,7 @@ declare(strict_types=1);
namespace FireflyIII\Handlers\Events;
use FireflyIII\Events\RequestedSendWebhookMessages;
use FireflyIII\Events\UpdatedTransactionGroup;
use FireflyIII\Generator\Webhook\MessageGeneratorInterface;
use FireflyIII\Models\Account;
@@ -125,8 +126,10 @@ class UpdatedGroupEventHandler
/** @var MessageGeneratorInterface $engine */
$engine = app(MessageGeneratorInterface::class);
$engine->setUser($user);
$engine->setTransactionGroups(new Collection([$group]));
$engine->setObjects(new Collection([$group]));
$engine->setTrigger(Webhook::TRIGGER_UPDATE_TRANSACTION);
$engine->generateMessages();
event(new RequestedSendWebhookMessages);
}
}

View File

@@ -22,14 +22,8 @@
namespace FireflyIII\Handlers\Events;
use Exception;
use FireflyIII\Helpers\Webhook\SignatureGeneratorInterface;
use FireflyIII\Models\WebhookAttempt;
use FireflyIII\Jobs\SendWebhookMessage;
use FireflyIII\Models\WebhookMessage;
use FireflyIII\Services\Webhook\WebhookSenderInterface;
use GuzzleHttp\Client;
use GuzzleHttp\Exception\ClientException;
use JsonException;
use Log;
/**
@@ -42,6 +36,7 @@ class WebhookEventHandler
*/
public function sendWebhookMessages(): void
{
// kick offf the job!
$messages = WebhookMessage
::where('webhook_messages.sent', 0)
->where('webhook_messages.errored', 0)
@@ -52,10 +47,8 @@ class WebhookEventHandler
}
)->splice(0, 3);
Log::debug(sprintf('Found %d webhook message(s) ready to be send.', $messages->count()));
$sender =app(WebhookSenderInterface::class);
$sender->setMessages($messages);
$sender->send();
foreach ($messages as $message) {
SendWebhookMessage::dispatch($message)->afterResponse();
}
}
}