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 {