From f3d6813d973e75dc8d828dc0353347f7222eb28c Mon Sep 17 00:00:00 2001 From: Rostislav Wolny Date: Tue, 10 Sep 2024 14:48:10 +0200 Subject: [PATCH] Load data inconsistencies async from API [MAILPOET-6219] --- .../js/src/help/data-inconsistencies.tsx | 28 ++++++++++++++----- mailpoet/assets/js/src/help/system-status.jsx | 3 +- mailpoet/lib/API/JSON/v1/Help.php | 4 +++ mailpoet/lib/AdminPages/Pages/Help.php | 5 ---- .../tests/integration/AdminPages/HelpTest.php | 2 -- mailpoet/views/help.html | 1 - 6 files changed, 26 insertions(+), 17 deletions(-) diff --git a/mailpoet/assets/js/src/help/data-inconsistencies.tsx b/mailpoet/assets/js/src/help/data-inconsistencies.tsx index f4921ac517..b1ff02fd1e 100644 --- a/mailpoet/assets/js/src/help/data-inconsistencies.tsx +++ b/mailpoet/assets/js/src/help/data-inconsistencies.tsx @@ -1,6 +1,6 @@ import { MailPoet } from 'mailpoet'; import { Button } from '@wordpress/components'; -import { useState, useCallback, useMemo } from '@wordpress/element'; +import { useState, useCallback, useMemo, useEffect } from '@wordpress/element'; import { __ } from '@wordpress/i18n'; import { KeyValueTable } from 'common/key-value-table'; @@ -8,14 +8,28 @@ type DataInconsistencies = { [key: string]: number; }; -type Props = { - dataInconsistencies: DataInconsistencies; -}; - -export function DataInconsistencies({ dataInconsistencies }: Props) { - const [data, setData] = useState(dataInconsistencies); +export function DataInconsistencies() { + const [data, setData] = useState({ total: 0 } as DataInconsistencies); const [cleaningKey, setCleaningKey] = useState(''); + useEffect(() => { + MailPoet.Ajax.post({ + api_version: window.mailpoet_api_version, + endpoint: 'help', + action: 'getInconsistentDataStatus', + }) + .done((response) => { + setData((response.data as DataInconsistencies) || null); + }) + .catch((e) => { + MailPoet.Notice.show({ + type: 'error', + message: e.errors.map((error) => error.message).join(' '), + scroll: true, + }); + }); + }, []); + const labelsMap = useMemo( () => ({ orphaned_sending_tasks: __('Orphaned Sending Tasks', 'mailpoet'), diff --git a/mailpoet/assets/js/src/help/system-status.jsx b/mailpoet/assets/js/src/help/system-status.jsx index cc5bcd6b15..78e1009c16 100644 --- a/mailpoet/assets/js/src/help/system-status.jsx +++ b/mailpoet/assets/js/src/help/system-status.jsx @@ -98,7 +98,6 @@ function renderMSSSection(data) { export function SystemStatus() { const systemStatusData = window.systemStatusData; const actionSchedulerData = window.actionSchedulerData; - const dataInconsistencies = window.dataInconsistencies; return ( <> @@ -116,7 +115,7 @@ export function SystemStatus() { {actionSchedulerData ? ( ) : null} - + ); } diff --git a/mailpoet/lib/API/JSON/v1/Help.php b/mailpoet/lib/API/JSON/v1/Help.php index f476b3805f..bf9299ac62 100644 --- a/mailpoet/lib/API/JSON/v1/Help.php +++ b/mailpoet/lib/API/JSON/v1/Help.php @@ -63,6 +63,10 @@ class Help extends APIEndpoint { } } + public function getInconsistentDataStatus(): Response { + return $this->successResponse($this->dataInconsistencyController->getInconsistentDataStatus()); + } + public function fixInconsistentData($data): Response { try { $this->dataInconsistencyController->fixInconsistentData($data['inconsistency'] ?? ''); diff --git a/mailpoet/lib/AdminPages/Pages/Help.php b/mailpoet/lib/AdminPages/Pages/Help.php index 5c614f3197..03af838b81 100644 --- a/mailpoet/lib/AdminPages/Pages/Help.php +++ b/mailpoet/lib/AdminPages/Pages/Help.php @@ -15,7 +15,6 @@ use MailPoet\Newsletter\Url as NewsletterURL; use MailPoet\Router\Endpoints\CronDaemon; use MailPoet\Services\Bridge; use MailPoet\SystemReport\SystemReportCollector; -use MailPoet\Util\DataInconsistency\DataInconsistencyController; use MailPoet\WP\DateTime; use MailPoet\WP\Functions as WPFunctions; @@ -26,7 +25,6 @@ class Help { private Bridge $bridge; private ScheduledTasksRepository $scheduledTasksRepository; private SendingQueuesRepository $sendingQueuesRepository; - private DataInconsistencyController $dataInconsistencyController; private NewsletterURL $newsletterUrl; public function __construct( @@ -36,7 +34,6 @@ class Help { Bridge $bridge, ScheduledTasksRepository $scheduledTasksRepository, SendingQueuesRepository $sendingQueuesRepository, - DataInconsistencyController $dataInconsistencyController, NewsletterURL $newsletterUrl ) { $this->pageRenderer = $pageRenderer; @@ -45,7 +42,6 @@ class Help { $this->bridge = $bridge; $this->scheduledTasksRepository = $scheduledTasksRepository; $this->sendingQueuesRepository = $sendingQueuesRepository; - $this->dataInconsistencyController = $dataInconsistencyController; $this->newsletterUrl = $newsletterUrl; } @@ -90,7 +86,6 @@ class Help { 'systemInfoData' => $systemInfoData, 'systemStatusData' => $systemStatusData, 'actionSchedulerData' => $this->getActionSchedulerData(), - 'dataInconsistencies' => $this->dataInconsistencyController->getInconsistentDataStatus(), ] ); } diff --git a/mailpoet/tests/integration/AdminPages/HelpTest.php b/mailpoet/tests/integration/AdminPages/HelpTest.php index 2c8932c350..9b36e3b4e1 100644 --- a/mailpoet/tests/integration/AdminPages/HelpTest.php +++ b/mailpoet/tests/integration/AdminPages/HelpTest.php @@ -16,7 +16,6 @@ use MailPoet\Services\Bridge; use MailPoet\SystemReport\SystemReportCollector; use MailPoet\Test\DataFactories\Newsletter; use MailPoet\Test\DataFactories\ScheduledTask as ScheduledTaskFactory; -use MailPoet\Util\DataInconsistency\DataInconsistencyController; use MailPoetVendor\Carbon\Carbon; class HelpTest extends \MailPoetTest { @@ -44,7 +43,6 @@ class HelpTest extends \MailPoetTest { $this->diContainer->get(Bridge::class), $this->diContainer->get(ScheduledTasksRepository::class), $this->sendingQueuesRepository, - $this->diContainer->get(DataInconsistencyController::class), $this->diContainer->get(Url::class) ); } diff --git a/mailpoet/views/help.html b/mailpoet/views/help.html index 022c48bfbf..39e6f62073 100644 --- a/mailpoet/views/help.html +++ b/mailpoet/views/help.html @@ -8,7 +8,6 @@ var systemInfoData = <%= json_encode(systemInfoData) %>; var systemStatusData = <%= json_encode(systemStatusData) %>; var actionSchedulerData = <%= json_encode(actionSchedulerData) %>; - var dataInconsistencies = <%= json_encode(dataInconsistencies) %>;