summaryrefslogtreecommitdiffstats
path: root/devtools/client/webconsole/reducers/ui.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/webconsole/reducers/ui.js')
-rw-r--r--devtools/client/webconsole/reducers/ui.js137
1 files changed, 137 insertions, 0 deletions
diff --git a/devtools/client/webconsole/reducers/ui.js b/devtools/client/webconsole/reducers/ui.js
new file mode 100644
index 0000000000..f3d8f0ca77
--- /dev/null
+++ b/devtools/client/webconsole/reducers/ui.js
@@ -0,0 +1,137 @@
+/* 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 {
+ INITIALIZE,
+ MESSAGES_CLEAR,
+ PERSIST_TOGGLE,
+ REVERSE_SEARCH_INPUT_TOGGLE,
+ SELECT_NETWORK_MESSAGE_TAB,
+ SHOW_OBJECT_IN_SIDEBAR,
+ SIDEBAR_CLOSE,
+ SPLIT_CONSOLE_CLOSE_BUTTON_TOGGLE,
+ TIMESTAMPS_TOGGLE,
+ FILTERBAR_DISPLAY_MODE_SET,
+ FILTERBAR_DISPLAY_MODES,
+ EDITOR_ONBOARDING_DISMISS,
+ EDITOR_TOGGLE,
+ EDITOR_PRETTY_PRINT,
+ EDITOR_SET_WIDTH,
+ ENABLE_NETWORK_MONITORING,
+ SHOW_EVALUATION_NOTIFICATION,
+} = require("resource://devtools/client/webconsole/constants.js");
+
+const {
+ PANELS,
+} = require("resource://devtools/client/netmonitor/src/constants.js");
+
+const UiState = overrides =>
+ Object.freeze(
+ Object.assign(
+ {
+ initialized: false,
+ networkMessageActiveTabId: PANELS.HEADERS,
+ persistLogs: false,
+ sidebarVisible: false,
+ timestampsVisible: true,
+ frontInSidebar: null,
+ closeButtonVisible: false,
+ reverseSearchInputVisible: false,
+ reverseSearchInitialValue: "",
+ editor: false,
+ editorWidth: null,
+ editorPrettifiedAt: null,
+ showEditorOnboarding: false,
+ filterBarDisplayMode: FILTERBAR_DISPLAY_MODES.WIDE,
+ cacheGeneration: 0,
+ // Only used in the browser toolbox console/ browser console
+ // turned off by default
+ enableNetworkMonitoring: false,
+ notification: null,
+ },
+ overrides
+ )
+ );
+
+function ui(state = UiState(), action) {
+ switch (action.type) {
+ case PERSIST_TOGGLE:
+ return { ...state, persistLogs: !state.persistLogs };
+ case TIMESTAMPS_TOGGLE:
+ return { ...state, timestampsVisible: !state.timestampsVisible };
+ case SELECT_NETWORK_MESSAGE_TAB:
+ return { ...state, networkMessageActiveTabId: action.id };
+ case SIDEBAR_CLOSE:
+ return {
+ ...state,
+ sidebarVisible: false,
+ frontInSidebar: null,
+ };
+ case INITIALIZE:
+ return { ...state, initialized: true };
+ case MESSAGES_CLEAR:
+ return {
+ ...state,
+ sidebarVisible: false,
+ frontInSidebar: null,
+ cacheGeneration: state.cacheGeneration + 1,
+ };
+ case SHOW_OBJECT_IN_SIDEBAR:
+ if (action.front === state.frontInSidebar) {
+ return state;
+ }
+ return { ...state, sidebarVisible: true, frontInSidebar: action.front };
+ case SPLIT_CONSOLE_CLOSE_BUTTON_TOGGLE:
+ return { ...state, closeButtonVisible: action.shouldDisplayButton };
+ case SHOW_EVALUATION_NOTIFICATION:
+ if (state.notification == action.notification) {
+ return state;
+ }
+ return { ...state, notification: action.notification };
+ case REVERSE_SEARCH_INPUT_TOGGLE:
+ return {
+ ...state,
+ reverseSearchInputVisible: !state.reverseSearchInputVisible,
+ reverseSearchInitialValue: action.initialValue || "",
+ };
+ case FILTERBAR_DISPLAY_MODE_SET:
+ return {
+ ...state,
+ filterBarDisplayMode: action.displayMode,
+ };
+ case EDITOR_TOGGLE:
+ return {
+ ...state,
+ editor: !state.editor,
+ };
+ case EDITOR_ONBOARDING_DISMISS:
+ return {
+ ...state,
+ showEditorOnboarding: false,
+ };
+ case EDITOR_SET_WIDTH:
+ return {
+ ...state,
+ editorWidth: action.width,
+ };
+ case EDITOR_PRETTY_PRINT:
+ return {
+ ...state,
+ editorPrettifiedAt: Date.now(),
+ };
+ case ENABLE_NETWORK_MONITORING:
+ return {
+ ...state,
+ enableNetworkMonitoring: !state.enableNetworkMonitoring,
+ };
+ }
+
+ return state;
+}
+
+module.exports = {
+ UiState,
+ ui,
+};