tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

ui-state.js (3153B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 "use strict";
      6 
      7 const {
      8  ADB_ADDON_STATUS_UPDATED,
      9  ADB_READY_UPDATED,
     10  DEBUG_TARGET_COLLAPSIBILITY_UPDATED,
     11  HIDE_PROFILER_DIALOG,
     12  NETWORK_LOCATIONS_UPDATE_SUCCESS,
     13  PROFILER_PAGE_CONTEXT,
     14  SELECT_PAGE_SUCCESS,
     15  SHOW_PROFILER_DIALOG,
     16  SWITCH_PROFILER_CONTEXT,
     17  TEMPORARY_EXTENSION_INSTALL_FAILURE,
     18  TEMPORARY_EXTENSION_INSTALL_SUCCESS,
     19  USB_RUNTIMES_SCAN_START,
     20  USB_RUNTIMES_SCAN_SUCCESS,
     21 } = require("resource://devtools/client/aboutdebugging/src/constants.js");
     22 
     23 function UiState(
     24  locations = [],
     25  debugTargetCollapsibilities = {},
     26  showHiddenAddons = false
     27 ) {
     28  return {
     29    adbAddonStatus: null,
     30    debugTargetCollapsibilities,
     31    isAdbReady: false,
     32    isScanningUsb: false,
     33    networkLocations: locations,
     34    profilerContext: PROFILER_PAGE_CONTEXT.DEVTOOLS_REMOTE,
     35    selectedPage: null,
     36    showProfilerDialog: false,
     37    showHiddenAddons,
     38    temporaryInstallError: null,
     39  };
     40 }
     41 
     42 function uiReducer(state = UiState(), action) {
     43  switch (action.type) {
     44    case ADB_ADDON_STATUS_UPDATED: {
     45      const { adbAddonStatus } = action;
     46      return Object.assign({}, state, { adbAddonStatus });
     47    }
     48 
     49    case ADB_READY_UPDATED: {
     50      const { isAdbReady } = action;
     51      return Object.assign({}, state, { isAdbReady });
     52    }
     53 
     54    case DEBUG_TARGET_COLLAPSIBILITY_UPDATED: {
     55      const { isCollapsed, key } = action;
     56      const debugTargetCollapsibilities = new Map(
     57        state.debugTargetCollapsibilities
     58      );
     59      debugTargetCollapsibilities.set(key, isCollapsed);
     60      return Object.assign({}, state, { debugTargetCollapsibilities });
     61    }
     62 
     63    case NETWORK_LOCATIONS_UPDATE_SUCCESS: {
     64      const { locations } = action;
     65      return Object.assign({}, state, { networkLocations: locations });
     66    }
     67 
     68    case SELECT_PAGE_SUCCESS: {
     69      const { page } = action;
     70      return Object.assign({}, state, { selectedPage: page });
     71    }
     72 
     73    case SHOW_PROFILER_DIALOG: {
     74      return Object.assign({}, state, {
     75        showProfilerDialog: true,
     76        // Always start in the devtools-remote view.
     77        profilerContext: "devtools-remote",
     78      });
     79    }
     80 
     81    case HIDE_PROFILER_DIALOG: {
     82      return Object.assign({}, state, { showProfilerDialog: false });
     83    }
     84 
     85    case SWITCH_PROFILER_CONTEXT: {
     86      const { profilerContext } = action;
     87      return Object.assign({}, state, { profilerContext });
     88    }
     89 
     90    case USB_RUNTIMES_SCAN_START: {
     91      return Object.assign({}, state, { isScanningUsb: true });
     92    }
     93 
     94    case USB_RUNTIMES_SCAN_SUCCESS: {
     95      return Object.assign({}, state, { isScanningUsb: false });
     96    }
     97 
     98    case TEMPORARY_EXTENSION_INSTALL_SUCCESS: {
     99      return Object.assign({}, state, { temporaryInstallError: null });
    100    }
    101 
    102    case TEMPORARY_EXTENSION_INSTALL_FAILURE: {
    103      const { error } = action;
    104      return Object.assign({}, state, { temporaryInstallError: error });
    105    }
    106 
    107    default:
    108      return state;
    109  }
    110 }
    111 
    112 module.exports = {
    113  UiState,
    114  uiReducer,
    115 };