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 };