summaryrefslogtreecommitdiffstats
path: root/devtools/client/webconsole/reducers/prefs.js
blob: e19f5acd32cf87d261201d3827b506342d89ae42 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/* 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 {
  EAGER_EVALUATION_TOGGLE,
  WARNING_GROUPS_TOGGLE,
  AUTOCOMPLETE_TOGGLE,
} = require("resource://devtools/client/webconsole/constants.js");

const PrefState = overrides =>
  Object.freeze(
    Object.assign(
      {
        logLimit: 1000,
        sidebarToggle: false,
        groupWarnings: false,
        autocomplete: false,
        eagerEvaluation: false,
        historyCount: 50,
      },
      overrides
    )
  );

const dict = {
  [EAGER_EVALUATION_TOGGLE]: "eagerEvaluation",
  [WARNING_GROUPS_TOGGLE]: "groupWarnings",
  [AUTOCOMPLETE_TOGGLE]: "autocomplete",
};

function prefs(state = PrefState(), action) {
  const pref = dict[action.type];
  if (pref) {
    return {
      ...state,
      [pref]: !state[pref],
    };
  }

  return state;
}

module.exports = {
  PrefState,
  prefs,
};