From 49cc5becf64bd987f00d907d13a10150b54173ee Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 20 Jun 2026 18:53:54 -0500 Subject: [PATCH] fix(heartbeat): show success/error notification to admin on install/update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both install-time and runtime heartbeat now enqueue visible messages for all outcomes — success, HTTP error, and connection failure — so the admin always knows whether the heartbeat registered. --- .../Extension/MokoSuiteClient.php | 5 ++++- source/script.php | 7 ++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/source/packages/plg_system_mokosuiteclient/Extension/MokoSuiteClient.php b/source/packages/plg_system_mokosuiteclient/Extension/MokoSuiteClient.php index ad4ae678..e6867820 100644 --- a/source/packages/plg_system_mokosuiteclient/Extension/MokoSuiteClient.php +++ b/source/packages/plg_system_mokosuiteclient/Extension/MokoSuiteClient.php @@ -2561,15 +2561,18 @@ class MokoSuiteClient extends CMSPlugin implements BootableExtensionInterface if ($response->code >= 200 && $response->code < 300) { - $this->app->enqueueMessage('MokoSuiteClientHQ heartbeat: site registered', 'message'); + $this->app->enqueueMessage('MokoSuiteHQ heartbeat: site registered successfully.', 'message'); } else { + $body = json_decode($response->body, true); + $msg = $body['error'] ?? $body['message'] ?? ('HTTP ' . $response->code); Log::add( \sprintf('Heartbeat HTTP %d: %s', $response->code, $response->body), Log::WARNING, 'mokosuiteclient' ); + $this->app->enqueueMessage('MokoSuiteHQ heartbeat failed: ' . $msg, 'warning'); } } catch (\Throwable $e) diff --git a/source/script.php b/source/script.php index bc85e657..24dc48d5 100644 --- a/source/script.php +++ b/source/script.php @@ -970,19 +970,24 @@ class Pkg_MokosuiteclientInstallerScript if ($error) { Log::add('Heartbeat connection failed: ' . $error, Log::WARNING, 'mokosuiteclient'); + Factory::getApplication()->enqueueMessage('MokoSuiteHQ heartbeat failed: ' . $error, 'warning'); } elseif ($code >= 200 && $code < 300) { - Factory::getApplication()->enqueueMessage('MokoSuiteClientHQ heartbeat: site registered', 'message'); + Factory::getApplication()->enqueueMessage('MokoSuiteHQ heartbeat: site registered successfully.', 'message'); } else { + $body = json_decode($response, true); + $msg = $body['error'] ?? $body['message'] ?? ('HTTP ' . $code); Log::add(sprintf('Heartbeat HTTP %d: %s', $code, $response), Log::WARNING, 'mokosuiteclient'); + Factory::getApplication()->enqueueMessage('MokoSuiteHQ heartbeat failed: ' . $msg, 'warning'); } } catch (\Throwable $e) { Log::add('Heartbeat failed: ' . $e->getMessage(), Log::WARNING, 'mokosuiteclient'); + Factory::getApplication()->enqueueMessage('MokoSuiteHQ heartbeat failed: ' . $e->getMessage(), 'warning'); } }