From 742c0a0bf1c79ba80df7c45052485b081d0adeb4 Mon Sep 17 00:00:00 2001 From: Nikita Date: Fri, 4 Aug 2023 13:36:42 +0300 Subject: [PATCH] added main store, which contains the selectors from mindData variable --- classes/class-assets.php | 4 ++-- src/index.js | 1 + .../components/not-connected-screen/index.js | 13 ++++++++++--- src/popup/index.js | 7 +++---- src/store/core/index.js | 18 ++++++++++++++++++ src/store/core/selectors.js | 9 +++++++++ src/store/popup/actions.js | 5 +++++ 7 files changed, 48 insertions(+), 9 deletions(-) create mode 100644 src/store/core/index.js create mode 100644 src/store/core/selectors.js diff --git a/classes/class-assets.php b/classes/class-assets.php index e5d1807..3e3d7be 100644 --- a/classes/class-assets.php +++ b/classes/class-assets.php @@ -60,8 +60,8 @@ class Mind_Assets { 'mind-editor', 'mindData', array( - 'connected' => ! ! $openai_key, - 'settingsURL' => admin_url( 'admin.php?page=mind' ), + 'connected' => ! ! $openai_key, + 'settingsPageURL' => admin_url( 'admin.php?page=mind' ), ) ); diff --git a/src/index.js b/src/index.js index 085cb22..bf54371 100644 --- a/src/index.js +++ b/src/index.js @@ -6,6 +6,7 @@ import './style.scss'; /** * Internal dependencies */ +import './store/core'; import './store/blocks'; import './store/popup'; import './popup'; diff --git a/src/popup/components/not-connected-screen/index.js b/src/popup/components/not-connected-screen/index.js index 1810ef5..edfeac6 100644 --- a/src/popup/components/not-connected-screen/index.js +++ b/src/popup/components/not-connected-screen/index.js @@ -7,10 +7,17 @@ import './style.scss'; * WordPress dependencies */ import { __ } from '@wordpress/i18n'; - -const { settingsURL } = window.mindData; +import { useSelect } from '@wordpress/data'; export default function NotConnectedScreen() { + const { settingsPageURL } = useSelect((select) => { + const { getSettingsPageURL } = select('mind'); + + return { + settingsPageURL: getSettingsPageURL(), + }; + }); + return (

{__('OpenAI Key', 'mind')}

@@ -25,7 +32,7 @@ export default function NotConnectedScreen() {
{__('Go to Settings', 'mind')} diff --git a/src/popup/index.js b/src/popup/index.js index 4641f53..0bb0f29 100644 --- a/src/popup/index.js +++ b/src/popup/index.js @@ -22,17 +22,15 @@ import Content from './components/content'; import Footer from './components/footer'; import NotConnectedScreen from './components/not-connected-screen'; -const { connected } = window.mindData; - const POPUP_CONTAINER_CLASS = 'mind-popup-container'; export default function Popup() { const { setHighlightBlocks } = useDispatch('mind/blocks'); - const { close, reset } = useDispatch('mind/popup'); - const { isOpen, insertionPlace, loading, response } = useSelect( + const { connected, isOpen, insertionPlace, loading, response } = useSelect( (select) => { + const { isConnected } = select('mind'); const { isOpen: checkIsOpen, getInsertionPlace, @@ -41,6 +39,7 @@ export default function Popup() { } = select('mind/popup'); return { + connected: isConnected(), isOpen: checkIsOpen(), insertionPlace: getInsertionPlace(), loading: getLoading(), diff --git a/src/store/core/index.js b/src/store/core/index.js new file mode 100644 index 0000000..c64ef10 --- /dev/null +++ b/src/store/core/index.js @@ -0,0 +1,18 @@ +/** + * Internal dependencies + */ +import * as selectors from './selectors'; + +/** + * WordPress dependencies + */ +import { createReduxStore, register } from '@wordpress/data'; + +const store = createReduxStore('mind', { + selectors, + reducer(state) { + return state; + }, +}); + +register(store); diff --git a/src/store/core/selectors.js b/src/store/core/selectors.js new file mode 100644 index 0000000..0afc5a6 --- /dev/null +++ b/src/store/core/selectors.js @@ -0,0 +1,9 @@ +const { connected, settingsPageURL } = window.mindData; + +export function isConnected() { + return connected === '1'; +} + +export function getSettingsPageURL() { + return settingsPageURL; +} diff --git a/src/store/popup/actions.js b/src/store/popup/actions.js index 262cbb6..7bc0474 100644 --- a/src/store/popup/actions.js +++ b/src/store/popup/actions.js @@ -8,6 +8,7 @@ import apiFetch from '@wordpress/api-fetch'; * Internal dependencies. */ import getSelectedBlocksContent from '../../utils/get-selected-blocks-content'; +import { isConnected } from '../core/selectors'; export function open() { return { @@ -78,6 +79,10 @@ export function setError(error) { export function requestAI() { return ({ dispatch, select }) => { + if (!isConnected) { + return; + } + const loading = select.getLoading(); if (loading) {