commit 9cf0006acdaa348439344ac68724701240ebda4e
parent 2ac3eb983df638a13bd5dbd27fe160aab7baa203
Author: Alexandre Poirot <poirot.alex@gmail.com>
Date: Tue, 7 Oct 2025 22:22:10 +0000
Bug 1991698 - [devtools] Use the shared thunk middleware in the debugger. r=devtools-reviewers,nchevobbe
Differential Revision: https://phabricator.services.mozilla.com/D267185
Diffstat:
6 files changed, 15 insertions(+), 40 deletions(-)
diff --git a/devtools/client/debugger/src/actions/utils/create-store.js b/devtools/client/debugger/src/actions/utils/create-store.js
@@ -15,13 +15,15 @@ import {
import { waitUntilService } from "./middleware/wait-service";
import { log } from "./middleware/log";
import { promise } from "./middleware/promise";
-import { thunk } from "./middleware/thunk";
import { timing } from "./middleware/timing";
import { context } from "./middleware/context";
const {
ignore,
} = require("resource://devtools/client/shared/redux/middleware/ignore.js");
+const {
+ thunk,
+} = require("resource://devtools/client/shared/redux/middleware/thunk.js");
/**
* This creates a dispatcher with all the standard middleware in place
@@ -38,7 +40,7 @@ const {
*/
const configureStore = (opts = {}) => {
const middleware = [
- thunk(opts.makeThunkArgs),
+ thunk(opts.thunkArgs),
context,
promise,
ignore,
diff --git a/devtools/client/debugger/src/actions/utils/middleware/moz.build b/devtools/client/debugger/src/actions/utils/middleware/moz.build
@@ -9,7 +9,6 @@ CompiledModules(
"context.js",
"log.js",
"promise.js",
- "thunk.js",
"timing.js",
"wait-service.js",
)
diff --git a/devtools/client/debugger/src/actions/utils/middleware/thunk.js b/devtools/client/debugger/src/actions/utils/middleware/thunk.js
@@ -1,22 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
-
-/**
- * A middleware that allows thunks (functions) to be dispatched. If
- * it's a thunk, it is called with an argument that contains
- * `dispatch`, `getState`, and any additional args passed in via the
- * middleware constructure. This allows the action to create multiple
- * actions (most likely asynchronously).
- */
-export function thunk(makeArgs) {
- return ({ dispatch, getState }) => {
- const args = { dispatch, getState };
-
- return next => action => {
- return typeof action === "function"
- ? action(makeArgs ? makeArgs(args, getState()) : args)
- : next(action);
- };
- };
-}
diff --git a/devtools/client/debugger/src/utils/bootstrap.js b/devtools/client/debugger/src/utils/bootstrap.js
@@ -44,9 +44,7 @@ export function bootstrapStore(client, workers, panel, initialState) {
const createStore = configureStore({
log: prefs.logging || flags.testing,
timing: debugJsModules,
- makeThunkArgs: args => {
- return { ...args, client, ...workers, panel };
- },
+ thunkArgs: { client, ...workers, panel },
});
let store = createStore(combineReducers(reducers), initialState);
diff --git a/devtools/client/debugger/src/utils/test-head.js b/devtools/client/debugger/src/utils/test-head.js
@@ -38,18 +38,15 @@ import sourceMapLoader from "devtools/client/shared/source-map-loader/source-map
function createStore(client, initialState = {}, sourceMapLoaderMock) {
const store = configureStore({
log: false,
- makeThunkArgs: args => {
- return {
- ...args,
- client,
- sourceMapLoader:
- sourceMapLoaderMock !== undefined
- ? sourceMapLoaderMock
- : sourceMapLoader,
- parserWorker,
- prettyPrintWorker,
- searchWorker,
- };
+ thunkArgs: {
+ client,
+ sourceMapLoader:
+ sourceMapLoaderMock !== undefined
+ ? sourceMapLoaderMock
+ : sourceMapLoader,
+ parserWorker,
+ prettyPrintWorker,
+ searchWorker,
},
})(combineReducers(reducers), initialState);
sourceQueue.clear();
diff --git a/devtools/client/framework/test/metrics/browser_metrics_debugger.js b/devtools/client/framework/test/metrics/browser_metrics_debugger.js
@@ -36,6 +36,7 @@ add_task(async function () {
"resource://devtools/client/shared/vendor/react-redux.js",
"resource://devtools/client/shared/vendor/redux.js",
"resource://devtools/client/shared/redux/subscriber.js",
+ "resource://devtools/client/shared/redux/middleware/thunk.js",
// React components loaded from Toolbox and Panel BrowserLoaders
"resource://devtools/client/shared/components/menu/MenuButton.js",