From e2f20bd546c950b408704f63d13fc53f5723eb71 Mon Sep 17 00:00:00 2001 From: Rebecca Scott Date: Thu, 4 Mar 2021 10:56:39 +1000 Subject: [PATCH] Tool to trigger WCA install --- api/api.php | 1 + api/tools/trigger-wca-install.php | 11 ++++ src/App/app.js | 6 ++ src/tools/index.js | 1 + src/tools/tools.js | 14 +++++ .../trigger-woocommerce-admin-install.js | 63 +++++++++++++++++++ 6 files changed, 96 insertions(+) create mode 100644 api/tools/trigger-wca-install.php create mode 100644 src/tools/index.js create mode 100644 src/tools/tools.js create mode 100644 src/tools/trigger-woocommerce-admin-install.js diff --git a/api/api.php b/api/api.php index 54e0e91dffb..2e11827288e 100644 --- a/api/api.php +++ b/api/api.php @@ -23,3 +23,4 @@ function register_woocommerce_admin_test_helper_rest_route( $route, $callback ) require( 'admin-notes/delete-all-notes.php' ); require( 'admin-notes/add-note.php' ); +require( 'tools/trigger-wca-install.php' ); diff --git a/api/tools/trigger-wca-install.php b/api/tools/trigger-wca-install.php new file mode 100644 index 00000000000..8485ac87ca6 --- /dev/null +++ b/api/tools/trigger-wca-install.php @@ -0,0 +1,11 @@ +

Options

; import { AdminNotes } from '../admin-notes'; +import { Tools } from '../tools'; const tabs = applyFilters( 'woocommerce_admin_test_helper_tabs', @@ -25,6 +26,11 @@ const tabs = applyFilters( title: 'Admin notes', content: , }, + { + name: 'tools', + title: 'Tools', + content: , + }, ] ); diff --git a/src/tools/index.js b/src/tools/index.js new file mode 100644 index 00000000000..ff35c53303c --- /dev/null +++ b/src/tools/index.js @@ -0,0 +1 @@ +export { Tools } from './tools'; diff --git a/src/tools/tools.js b/src/tools/tools.js new file mode 100644 index 00000000000..ab1cce472f9 --- /dev/null +++ b/src/tools/tools.js @@ -0,0 +1,14 @@ +/** + * Internal dependencies. + */ +import { TriggerWooCommerceAdminInstall } from './trigger-woocommerce-admin-install'; + +export const Tools = () => { + return ( + <> +

Tools

+

This section contains miscellaneous tools.

+ + + ); +}; diff --git a/src/tools/trigger-woocommerce-admin-install.js b/src/tools/trigger-woocommerce-admin-install.js new file mode 100644 index 00000000000..3ca7fa86012 --- /dev/null +++ b/src/tools/trigger-woocommerce-admin-install.js @@ -0,0 +1,63 @@ +/** + * External dependencies. + */ +import { useState } from '@wordpress/element'; +import { Button } from '@wordpress/components'; +import apiFetch from '@wordpress/api-fetch'; + +export const TriggerWooCommerceAdminInstall = () => { + const [ isInstalling, setIsInstalling ] = useState( false ); + const [ hasInstalled, setHasInstalled ] = useState( false ); + const [ errorMessage, setErrorMessage ] = useState( false ); + + async function triggerInstall() { + if ( ! confirm( 'Are you sure you want to trigger a WCA install?' ) ) { + return; + } + + setIsInstalling( true ); + setHasInstalled( false ); + setErrorMessage( false ); + + try { + await apiFetch( { + path: '/wc-admin-test-helper/tools/trigger-wca-install/v1', + method: 'POST', + } ); + setHasInstalled( true ); + } catch ( ex ) { + setErrorMessage( ex.message ); + } + + setIsInstalling( false ); + } + + return ( + <> +

Trigger WooCommerce Admin install

+

+ This will trigger a WooCommerce Admin install, which usually + happens when a new version (or new install) of WooCommerce + Admin is installed. Triggering the install manually can + run tasks such as removing obsolete admin notes. +
+ +

+ { isInstalling && 'Running install, please wait' } + { hasInstalled && 'Install completed' } + { errorMessage && ( + <> + Error: { errorMessage } + + ) } +
+

+ + ); +};