gecko-dev/devtools/client/memory/reducers/individuals.js
J. Ryan Stinnett 30b2b7ce44 Bug 1271084 - Apply ESLint autofixes to ignored /devtools files. r=tromey
For simple rules like function spacing, we can auto-fix these across the code
base so they are followed in a consistent way.

To generate this patch, I ran:

./mach eslint devtools --no-ignore --fix

After this, I reverted any changes to third party files that we really do want
to ignore.

MozReview-Commit-ID: 6Q8BApkAW20
2016-05-18 12:49:23 -05:00

74 lines
2.2 KiB
JavaScript

/* 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, immutableUpdate } = require("devtools/shared/DevToolsUtils");
const { actions, individualsState, viewState } = require("../constants");
const handlers = Object.create(null);
handlers[actions.POP_VIEW] = function (_state, _action) {
return null;
};
handlers[actions.CHANGE_VIEW] = function (individuals, { newViewState }) {
if (newViewState === viewState.INDIVIDUALS) {
assert(!individuals,
"Should not switch to individuals view when already in individuals view");
return Object.freeze({
state: individualsState.COMPUTING_DOMINATOR_TREE,
});
}
return null;
};
handlers[actions.FOCUS_INDIVIDUAL] = function (individuals, { node }) {
assert(individuals, "Should have individuals");
return immutableUpdate(individuals, { focused: node });
};
handlers[actions.FETCH_INDIVIDUALS_START] = function (individuals, action) {
assert(individuals, "Should have individuals");
return Object.freeze({
state: individualsState.FETCHING,
focused: individuals.focused,
});
};
handlers[actions.FETCH_INDIVIDUALS_END] = function (individuals, action) {
assert(individuals, "Should have individuals");
assert(!individuals.nodes, "Should not have nodes");
assert(individuals.state === individualsState.FETCHING,
"Should only end fetching individuals after starting.");
const focused = individuals.focused
? action.nodes.find(n => n.nodeId === individuals.focused.nodeId)
: null;
return Object.freeze({
state: individualsState.FETCHED,
nodes: action.nodes,
id: action.id,
censusBreakdown: action.censusBreakdown,
indices: action.indices,
labelDisplay: action.labelDisplay,
focused,
dominatorTree: action.dominatorTree,
});
};
handlers[actions.INDIVIDUALS_ERROR] = function (_, { error }) {
return Object.freeze({
error,
nodes: null,
state: individualsState.ERROR,
});
};
module.exports = function (individuals = null, action) {
const handler = handlers[action.type];
return handler ? handler(individuals, action) : individuals;
};