From 1ba641c27911c62b9585500c051c681b0b075483 Mon Sep 17 00:00:00 2001 From: James Cole Date: Thu, 21 Aug 2025 20:31:32 +0200 Subject: [PATCH] Prevent a loop. --- app/Api/V1/Controllers/Webhook/ShowController.php | 2 +- app/Casts/SeparateTimezoneCaster.php | 2 +- app/Handlers/Events/DestroyedGroupEventHandler.php | 2 +- app/Handlers/Events/StoredGroupEventHandler.php | 1 + app/Handlers/Events/UpdatedGroupEventHandler.php | 1 + app/Handlers/Observer/BudgetLimitObserver.php | 2 ++ app/Handlers/Observer/BudgetObserver.php | 7 ++++--- app/Repositories/Budget/BudgetRepository.php | 2 +- config/translations.php | 2 ++ 9 files changed, 14 insertions(+), 7 deletions(-) diff --git a/app/Api/V1/Controllers/Webhook/ShowController.php b/app/Api/V1/Controllers/Webhook/ShowController.php index 69be75a49a..c8fb5efd19 100644 --- a/app/Api/V1/Controllers/Webhook/ShowController.php +++ b/app/Api/V1/Controllers/Webhook/ShowController.php @@ -172,7 +172,7 @@ class ShowController extends Controller $engine->generateMessages(); // trigger event to send them: - Log::debug('send event RequestedSendWebhookMessages'); + Log::debug('send event RequestedSendWebhookMessages from ShowController::triggerTransaction()'); event(new RequestedSendWebhookMessages()); return response()->json([], 204); diff --git a/app/Casts/SeparateTimezoneCaster.php b/app/Casts/SeparateTimezoneCaster.php index c318626ba6..8e9f2231bf 100644 --- a/app/Casts/SeparateTimezoneCaster.php +++ b/app/Casts/SeparateTimezoneCaster.php @@ -52,7 +52,7 @@ class SeparateTimezoneCaster implements CastsAttributes $timeZone = $attributes[sprintf('%s_tz', $key)] ?? config('app.timezone'); $result = Carbon::parse($value, $timeZone)->setTimezone(config('app.timezone')); - Log::debug(sprintf('SeparateTimezoneCaster: %s.%s = %s', str_replace('FireflyIII\\Models\\','',get_class($model)), $key, $result->toAtomString())); + // Log::debug(sprintf('SeparateTimezoneCaster: %s.%s = %s', str_replace('FireflyIII\\Models\\','',get_class($model)), $key, $result->toAtomString())); return $result; } diff --git a/app/Handlers/Events/DestroyedGroupEventHandler.php b/app/Handlers/Events/DestroyedGroupEventHandler.php index fb5baf4c22..9f5926c96c 100644 --- a/app/Handlers/Events/DestroyedGroupEventHandler.php +++ b/app/Handlers/Events/DestroyedGroupEventHandler.php @@ -55,7 +55,7 @@ class DestroyedGroupEventHandler $engine->setObjects(new Collection([$group])); $engine->setTrigger(WebhookTrigger::DESTROY_TRANSACTION); $engine->generateMessages(); - + Log::debug(sprintf('send event RequestedSendWebhookMessages from %s', __METHOD__)); event(new RequestedSendWebhookMessages()); } diff --git a/app/Handlers/Events/StoredGroupEventHandler.php b/app/Handlers/Events/StoredGroupEventHandler.php index a5f806ae0c..0b471c01ac 100644 --- a/app/Handlers/Events/StoredGroupEventHandler.php +++ b/app/Handlers/Events/StoredGroupEventHandler.php @@ -121,6 +121,7 @@ class StoredGroupEventHandler $engine->generateMessages(); // trigger event to send them: + Log::debug(sprintf('send event RequestedSendWebhookMessages from %s', __METHOD__)); event(new RequestedSendWebhookMessages()); } } diff --git a/app/Handlers/Events/UpdatedGroupEventHandler.php b/app/Handlers/Events/UpdatedGroupEventHandler.php index b25c913d0b..71c04589db 100644 --- a/app/Handlers/Events/UpdatedGroupEventHandler.php +++ b/app/Handlers/Events/UpdatedGroupEventHandler.php @@ -167,6 +167,7 @@ class UpdatedGroupEventHandler $engine->setTrigger(WebhookTrigger::UPDATE_TRANSACTION); $engine->generateMessages(); + Log::debug(sprintf('send event RequestedSendWebhookMessages from %s', __METHOD__)); event(new RequestedSendWebhookMessages()); } diff --git a/app/Handlers/Observer/BudgetLimitObserver.php b/app/Handlers/Observer/BudgetLimitObserver.php index f6fcc85f03..ae6b1aac6a 100644 --- a/app/Handlers/Observer/BudgetLimitObserver.php +++ b/app/Handlers/Observer/BudgetLimitObserver.php @@ -53,6 +53,7 @@ class BudgetLimitObserver $engine->setTrigger(WebhookTrigger::STORE_UPDATE_BUDGET_LIMIT); $engine->generateMessages(); + Log::debug(sprintf('send event RequestedSendWebhookMessages from %s', __METHOD__)); event(new RequestedSendWebhookMessages()); } @@ -90,6 +91,7 @@ class BudgetLimitObserver $engine->setTrigger(WebhookTrigger::STORE_UPDATE_BUDGET_LIMIT); $engine->generateMessages(); + Log::debug(sprintf('send event RequestedSendWebhookMessages from %s', __METHOD__)); event(new RequestedSendWebhookMessages()); } } diff --git a/app/Handlers/Observer/BudgetObserver.php b/app/Handlers/Observer/BudgetObserver.php index 51a87b864f..bdb8eb52e9 100644 --- a/app/Handlers/Observer/BudgetObserver.php +++ b/app/Handlers/Observer/BudgetObserver.php @@ -25,6 +25,7 @@ namespace FireflyIII\Handlers\Observer; use FireflyIII\Enums\WebhookTrigger; use FireflyIII\Events\RequestedSendWebhookMessages; +use FireflyIII\Exceptions\FireflyException; use FireflyIII\Generator\Webhook\MessageGeneratorInterface; use FireflyIII\Models\Attachment; use FireflyIII\Models\Budget; @@ -54,7 +55,7 @@ class BudgetObserver $engine->setObjects(new Collection()->push($budget)); $engine->setTrigger(WebhookTrigger::STORE_BUDGET); $engine->generateMessages(); - + Log::debug(sprintf('send event RequestedSendWebhookMessages from %s', __METHOD__)); event(new RequestedSendWebhookMessages()); } @@ -69,7 +70,7 @@ class BudgetObserver $engine->setObjects(new Collection()->push($budget)); $engine->setTrigger(WebhookTrigger::UPDATE_BUDGET); $engine->generateMessages(); - + Log::debug(sprintf('send event RequestedSendWebhookMessages from %s', __METHOD__)); event(new RequestedSendWebhookMessages()); } @@ -85,7 +86,7 @@ class BudgetObserver $engine->setObjects(new Collection()->push($budget)); $engine->setTrigger(WebhookTrigger::DESTROY_BUDGET); $engine->generateMessages(); - + Log::debug(sprintf('send event RequestedSendWebhookMessages from %s', __METHOD__)); event(new RequestedSendWebhookMessages()); $repository = app(AttachmentRepositoryInterface::class); diff --git a/app/Repositories/Budget/BudgetRepository.php b/app/Repositories/Budget/BudgetRepository.php index 56de39dcc6..028d874f36 100644 --- a/app/Repositories/Budget/BudgetRepository.php +++ b/app/Repositories/Budget/BudgetRepository.php @@ -268,7 +268,7 @@ class BudgetRepository implements BudgetRepositoryInterface, UserGroupInterface */ foreach ($budgets as $index => $budget) { $budget->order = $index + 1; - $budget->save(); + $budget->saveQuietly(); } // other budgets, set to 0. $this->user->budgets()->where('active', 0)->update(['order' => 0]); diff --git a/config/translations.php b/config/translations.php index 426e3ca355..2bb39e82d9 100644 --- a/config/translations.php +++ b/config/translations.php @@ -248,6 +248,7 @@ return [ 'multi_account_warning_deposit', 'multi_account_warning_transfer', + 'webhook_trigger_ANY', 'webhook_trigger_STORE_TRANSACTION', 'webhook_trigger_UPDATE_TRANSACTION', 'webhook_trigger_DESTROY_TRANSACTION', @@ -258,6 +259,7 @@ return [ 'webhook_trigger_STORE_UPDATE_BUDGET_LIMIT', 'webhook_response_TRANSACTIONS', + 'webhook_response_RELEVANT', 'webhook_response_ACCOUNTS', 'webhook_response_NONE', 'webhook_delivery_JSON',