diff options
Diffstat (limited to 'devtools/client/webconsole/reducers/ui.js')
-rw-r--r-- | devtools/client/webconsole/reducers/ui.js | 130 |
1 files changed, 130 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..aa68242ab9 --- /dev/null +++ b/devtools/client/webconsole/reducers/ui.js @@ -0,0 +1,130 @@ +/* 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, +} = 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, + }, + 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 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, +}; |