From fe0f17a9ce7d016ef110cb97c87bdfa7764e35f5 Mon Sep 17 00:00:00 2001
From: Philipp Stracker
Date: Fri, 14 Feb 2025 17:55:45 +0100
Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Create=20refresh=20actions=20for=20?=
=?UTF-8?q?all=20stores?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../resources/js/data/_example/actions.js | 13 ++++++++++++
.../resources/js/data/common/actions-thunk.js | 13 ++++++++++++
.../js/data/pay-later-messaging/actions.js | 13 ++++++++++++
.../resources/js/data/payment/actions.js | 2 +-
.../resources/js/data/settings/actions.js | 13 ++++++++++++
.../resources/js/data/styling/actions.js | 13 ++++++++++++
.../resources/js/data/todos/actions.js | 21 ++++++++++++++++++-
7 files changed, 86 insertions(+), 2 deletions(-)
diff --git a/modules/ppcp-settings/resources/js/data/_example/actions.js b/modules/ppcp-settings/resources/js/data/_example/actions.js
index f9cd9a556..51b516bb1 100644
--- a/modules/ppcp-settings/resources/js/data/_example/actions.js
+++ b/modules/ppcp-settings/resources/js/data/_example/actions.js
@@ -82,3 +82,16 @@ export function persist() {
} );
};
}
+
+/**
+ * Thunk action creator. Forces a data refresh from the REST API, replacing the current Redux values.
+ *
+ * @return {Function} The thunk function.
+ */
+export function refresh() {
+ return ( { dispatch, select } ) => {
+ dispatch.invalidateResolutionForStore();
+
+ select.persistentData();
+ };
+}
diff --git a/modules/ppcp-settings/resources/js/data/common/actions-thunk.js b/modules/ppcp-settings/resources/js/data/common/actions-thunk.js
index 8e7448af8..d49aa914a 100644
--- a/modules/ppcp-settings/resources/js/data/common/actions-thunk.js
+++ b/modules/ppcp-settings/resources/js/data/common/actions-thunk.js
@@ -27,6 +27,19 @@ export function persist() {
};
}
+/**
+ * Thunk action creator. Forces a data refresh from the REST API, replacing the current Redux values.
+ *
+ * @return {Function} The thunk function.
+ */
+export function refresh() {
+ return ( { dispatch, select } ) => {
+ dispatch.invalidateResolutionForStore();
+
+ select.persistentData();
+ };
+}
+
/**
* Side effect. Fetches the ISU-login URL for a sandbox account.
*
diff --git a/modules/ppcp-settings/resources/js/data/pay-later-messaging/actions.js b/modules/ppcp-settings/resources/js/data/pay-later-messaging/actions.js
index f9cd9a556..51b516bb1 100644
--- a/modules/ppcp-settings/resources/js/data/pay-later-messaging/actions.js
+++ b/modules/ppcp-settings/resources/js/data/pay-later-messaging/actions.js
@@ -82,3 +82,16 @@ export function persist() {
} );
};
}
+
+/**
+ * Thunk action creator. Forces a data refresh from the REST API, replacing the current Redux values.
+ *
+ * @return {Function} The thunk function.
+ */
+export function refresh() {
+ return ( { dispatch, select } ) => {
+ dispatch.invalidateResolutionForStore();
+
+ select.persistentData();
+ };
+}
diff --git a/modules/ppcp-settings/resources/js/data/payment/actions.js b/modules/ppcp-settings/resources/js/data/payment/actions.js
index d8398795a..dfa100f76 100644
--- a/modules/ppcp-settings/resources/js/data/payment/actions.js
+++ b/modules/ppcp-settings/resources/js/data/payment/actions.js
@@ -102,7 +102,7 @@ export function persist() {
*/
export function refresh() {
return ( { dispatch, select } ) => {
- dispatch.invalidateResolutionForStoreSelector( 'persistentData' );
+ dispatch.invalidateResolutionForStore();
select.persistentData();
};
diff --git a/modules/ppcp-settings/resources/js/data/settings/actions.js b/modules/ppcp-settings/resources/js/data/settings/actions.js
index 6633516bb..f99adae5a 100644
--- a/modules/ppcp-settings/resources/js/data/settings/actions.js
+++ b/modules/ppcp-settings/resources/js/data/settings/actions.js
@@ -84,3 +84,16 @@ export function persist() {
} );
};
}
+
+/**
+ * Thunk action creator. Forces a data refresh from the REST API, replacing the current Redux values.
+ *
+ * @return {Function} The thunk function.
+ */
+export function refresh() {
+ return ( { dispatch, select } ) => {
+ dispatch.invalidateResolutionForStore();
+
+ select.persistentData();
+ };
+}
diff --git a/modules/ppcp-settings/resources/js/data/styling/actions.js b/modules/ppcp-settings/resources/js/data/styling/actions.js
index 9e1639c7f..72d4d9ea7 100644
--- a/modules/ppcp-settings/resources/js/data/styling/actions.js
+++ b/modules/ppcp-settings/resources/js/data/styling/actions.js
@@ -82,3 +82,16 @@ export function persist() {
} );
};
}
+
+/**
+ * Thunk action creator. Forces a data refresh from the REST API, replacing the current Redux values.
+ *
+ * @return {Function} The thunk function.
+ */
+export function refresh() {
+ return ( { dispatch, select } ) => {
+ dispatch.invalidateResolutionForStore();
+
+ select.persistentData();
+ };
+}
diff --git a/modules/ppcp-settings/resources/js/data/todos/actions.js b/modules/ppcp-settings/resources/js/data/todos/actions.js
index 41ac372cd..864fe4173 100644
--- a/modules/ppcp-settings/resources/js/data/todos/actions.js
+++ b/modules/ppcp-settings/resources/js/data/todos/actions.js
@@ -39,6 +39,7 @@ export const setCompletedTodos = ( completedTodos ) => ( {
// Thunks
+// TODO: Possibly, this should be a resolver?
export function fetchTodos() {
return async () => {
const response = await apiFetch( { path: REST_PATH } );
@@ -46,9 +47,14 @@ export function fetchTodos() {
};
}
+/**
+ * Thunk action creator. Triggers the persistence of store data to the server.
+ *
+ * @return {Function} The thunk function.
+ */
export function persist() {
return async ( { select } ) => {
- return await apiFetch( {
+ await apiFetch( {
path: REST_PERSIST_PATH,
method: 'POST',
data: select.persistentData(),
@@ -56,6 +62,19 @@ export function persist() {
};
}
+/**
+ * Thunk action creator. Forces a data refresh from the REST API, replacing the current Redux values.
+ *
+ * @return {Function} The thunk function.
+ */
+export function refresh() {
+ return ( { dispatch, select } ) => {
+ dispatch.invalidateResolutionForStore();
+
+ select.persistentData();
+ };
+}
+
export function resetDismissedTodos() {
return async ( { dispatch } ) => {
try {