diff options
Diffstat (limited to 'devtools/client/memory/actions/view.js')
-rw-r--r-- | devtools/client/memory/actions/view.js | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/devtools/client/memory/actions/view.js b/devtools/client/memory/actions/view.js new file mode 100644 index 000000000..5ff508840 --- /dev/null +++ b/devtools/client/memory/actions/view.js @@ -0,0 +1,67 @@ +/* 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/. */ +"use strict"; + +const { assert } = require("devtools/shared/DevToolsUtils"); +const { actions } = require("../constants"); +const { findSelectedSnapshot } = require("../utils"); +const refresh = require("./refresh"); + +/** + * Change the currently selected view. + * + * @param {viewState} view + */ +const changeView = exports.changeView = function (view) { + return function (dispatch, getState) { + dispatch({ + type: actions.CHANGE_VIEW, + newViewState: view, + oldDiffing: getState().diffing, + oldSelected: findSelectedSnapshot(getState()), + }); + }; +}; + +/** + * Given that we are in the INDIVIDUALS view state, go back to the state we were + * in before. + */ +const popView = exports.popView = function () { + return function (dispatch, getState) { + const { previous } = getState().view; + assert(previous); + dispatch({ + type: actions.POP_VIEW, + previousView: previous, + }); + }; +}; + +/** + * Change the currently selected view and ensure all our data is up to date from + * the heap worker. + * + * @param {viewState} view + * @param {HeapAnalysesClient} heapWorker + */ +exports.changeViewAndRefresh = function (view, heapWorker) { + return function* (dispatch, getState) { + dispatch(changeView(view)); + yield dispatch(refresh.refresh(heapWorker)); + }; +}; + +/** + * Given that we are in the INDIVIDUALS view state, go back to the state we were + * previously in and refresh our data. + * + * @param {HeapAnalysesClient} heapWorker + */ +exports.popViewAndRefresh = function (heapWorker) { + return function* (dispatch, getState) { + dispatch(popView()); + yield dispatch(refresh.refresh(heapWorker)); + }; +}; |