summaryrefslogtreecommitdiffstats
path: root/devtools/client/webconsole/actions/ui.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/webconsole/actions/ui.js')
-rw-r--r--devtools/client/webconsole/actions/ui.js247
1 files changed, 247 insertions, 0 deletions
diff --git a/devtools/client/webconsole/actions/ui.js b/devtools/client/webconsole/actions/ui.js
new file mode 100644
index 0000000000..a8ffaee0f3
--- /dev/null
+++ b/devtools/client/webconsole/actions/ui.js
@@ -0,0 +1,247 @@
+/* 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 {
+ getAllPrefs,
+} = require("resource://devtools/client/webconsole/selectors/prefs.js");
+const {
+ getAllUi,
+} = require("resource://devtools/client/webconsole/selectors/ui.js");
+const {
+ getMessage,
+} = require("resource://devtools/client/webconsole/selectors/messages.js");
+
+const {
+ INITIALIZE,
+ PERSIST_TOGGLE,
+ PREFS,
+ REVERSE_SEARCH_INPUT_TOGGLE,
+ SELECT_NETWORK_MESSAGE_TAB,
+ SHOW_OBJECT_IN_SIDEBAR,
+ SIDEBAR_CLOSE,
+ SPLIT_CONSOLE_CLOSE_BUTTON_TOGGLE,
+ TIMESTAMPS_TOGGLE,
+ WARNING_GROUPS_TOGGLE,
+ FILTERBAR_DISPLAY_MODE_SET,
+ EDITOR_TOGGLE,
+ EDITOR_SET_WIDTH,
+ EDITOR_ONBOARDING_DISMISS,
+ EAGER_EVALUATION_TOGGLE,
+ AUTOCOMPLETE_TOGGLE,
+ ENABLE_NETWORK_MONITORING,
+} = require("resource://devtools/client/webconsole/constants.js");
+
+function openLink(url, e) {
+ return ({ hud }) => {
+ return hud.openLink(url, e);
+ };
+}
+
+function persistToggle() {
+ return ({ dispatch, getState, prefsService }) => {
+ dispatch({
+ type: PERSIST_TOGGLE,
+ });
+ const uiState = getAllUi(getState());
+ prefsService.setBoolPref(PREFS.UI.PERSIST, uiState.persistLogs);
+ };
+}
+
+function networkMonitoringToggle() {
+ return ({ dispatch, getState, prefsService, webConsoleUI }) => {
+ dispatch({ type: ENABLE_NETWORK_MONITORING });
+ const uiState = getAllUi(getState());
+
+ prefsService.setBoolPref(
+ PREFS.UI.ENABLE_NETWORK_MONITORING,
+ uiState.enableNetworkMonitoring
+ );
+
+ if (uiState.enableNetworkMonitoring) {
+ webConsoleUI.startWatchingNetworkResources();
+ } else {
+ webConsoleUI.stopWatchingNetworkResources();
+ }
+ };
+}
+
+function timestampsToggle() {
+ return ({ dispatch, getState, prefsService }) => {
+ dispatch({
+ type: TIMESTAMPS_TOGGLE,
+ });
+ const uiState = getAllUi(getState());
+ prefsService.setBoolPref(
+ PREFS.UI.MESSAGE_TIMESTAMP,
+ uiState.timestampsVisible
+ );
+ };
+}
+
+function autocompleteToggle() {
+ return ({ dispatch, getState, prefsService }) => {
+ dispatch({
+ type: AUTOCOMPLETE_TOGGLE,
+ });
+ const prefsState = getAllPrefs(getState());
+ prefsService.setBoolPref(
+ PREFS.FEATURES.AUTOCOMPLETE,
+ prefsState.autocomplete
+ );
+ };
+}
+
+function warningGroupsToggle() {
+ return ({ dispatch, getState, prefsService }) => {
+ dispatch({
+ type: WARNING_GROUPS_TOGGLE,
+ });
+ const prefsState = getAllPrefs(getState());
+ prefsService.setBoolPref(
+ PREFS.FEATURES.GROUP_WARNINGS,
+ prefsState.groupWarnings
+ );
+ };
+}
+
+function eagerEvaluationToggle() {
+ return ({ dispatch, getState, prefsService }) => {
+ dispatch({
+ type: EAGER_EVALUATION_TOGGLE,
+ });
+ const prefsState = getAllPrefs(getState());
+ prefsService.setBoolPref(
+ PREFS.FEATURES.EAGER_EVALUATION,
+ prefsState.eagerEvaluation
+ );
+ };
+}
+
+function selectNetworkMessageTab(id) {
+ return {
+ type: SELECT_NETWORK_MESSAGE_TAB,
+ id,
+ };
+}
+
+function initialize() {
+ return {
+ type: INITIALIZE,
+ };
+}
+
+function sidebarClose() {
+ return {
+ type: SIDEBAR_CLOSE,
+ };
+}
+
+function splitConsoleCloseButtonToggle(shouldDisplayButton) {
+ return {
+ type: SPLIT_CONSOLE_CLOSE_BUTTON_TOGGLE,
+ shouldDisplayButton,
+ };
+}
+
+function editorToggle() {
+ return ({ dispatch, getState, prefsService }) => {
+ dispatch({
+ type: EDITOR_TOGGLE,
+ });
+ const uiState = getAllUi(getState());
+ prefsService.setBoolPref(PREFS.UI.EDITOR, uiState.editor);
+ };
+}
+
+function editorOnboardingDismiss() {
+ return ({ dispatch, prefsService }) => {
+ dispatch({
+ type: EDITOR_ONBOARDING_DISMISS,
+ });
+ prefsService.setBoolPref(PREFS.UI.EDITOR_ONBOARDING, false);
+ };
+}
+
+function setEditorWidth(width) {
+ return ({ dispatch, prefsService }) => {
+ dispatch({
+ type: EDITOR_SET_WIDTH,
+ width,
+ });
+ prefsService.setIntPref(PREFS.UI.EDITOR_WIDTH, width);
+ };
+}
+
+/**
+ * Dispatches a SHOW_OBJECT_IN_SIDEBAR action, with a grip property corresponding to the
+ * {actor} parameter in the {messageId} message.
+ *
+ * @param {String} actorID: Actor id of the object we want to place in the sidebar.
+ * @param {String} messageId: id of the message containing the {actor} parameter.
+ */
+function showMessageObjectInSidebar(actorID, messageId) {
+ return ({ dispatch, getState }) => {
+ const { parameters } = getMessage(getState(), messageId);
+ if (Array.isArray(parameters)) {
+ for (const parameter of parameters) {
+ if (parameter && parameter.actorID === actorID) {
+ dispatch(showObjectInSidebar(parameter));
+ return;
+ }
+ }
+ }
+ };
+}
+
+function showObjectInSidebar(front) {
+ return {
+ type: SHOW_OBJECT_IN_SIDEBAR,
+ front,
+ };
+}
+
+function reverseSearchInputToggle({ initialValue, access } = {}) {
+ return {
+ type: REVERSE_SEARCH_INPUT_TOGGLE,
+ initialValue,
+ access,
+ };
+}
+
+function filterBarDisplayModeSet(displayMode) {
+ return {
+ type: FILTERBAR_DISPLAY_MODE_SET,
+ displayMode,
+ };
+}
+
+function openSidebar(messageId, rootActorId) {
+ return ({ dispatch }) => {
+ dispatch(showMessageObjectInSidebar(rootActorId, messageId));
+ };
+}
+
+module.exports = {
+ eagerEvaluationToggle,
+ editorOnboardingDismiss,
+ editorToggle,
+ filterBarDisplayModeSet,
+ initialize,
+ persistToggle,
+ reverseSearchInputToggle,
+ selectNetworkMessageTab,
+ setEditorWidth,
+ showMessageObjectInSidebar,
+ showObjectInSidebar,
+ sidebarClose,
+ splitConsoleCloseButtonToggle,
+ timestampsToggle,
+ networkMonitoringToggle,
+ warningGroupsToggle,
+ openLink,
+ openSidebar,
+ autocompleteToggle,
+};