NetworkDetailsBar.js (3462B)
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 createFactory, 9 } = require("resource://devtools/client/shared/vendor/react.mjs"); 10 const PropTypes = require("resource://devtools/client/shared/vendor/react-prop-types.mjs"); 11 const dom = require("resource://devtools/client/shared/vendor/react-dom-factories.js"); 12 const { 13 connect, 14 } = require("resource://devtools/client/shared/vendor/react-redux.js"); 15 const Actions = require("resource://devtools/client/netmonitor/src/actions/index.js"); 16 const { 17 getSelectedRequest, 18 } = require("resource://devtools/client/netmonitor/src/selectors/index.js"); 19 20 // Components 21 loader.lazyGetter(this, "CustomRequestPanel", function () { 22 return createFactory( 23 require("resource://devtools/client/netmonitor/src/components/CustomRequestPanel.js") 24 ); 25 }); 26 loader.lazyGetter(this, "TabboxPanel", function () { 27 return createFactory( 28 require("resource://devtools/client/netmonitor/src/components/TabboxPanel.js") 29 .ConnectedTabboxPanel 30 ); 31 }); 32 33 const { div } = dom; 34 35 /** 36 * Network details panel component 37 */ 38 function NetworkDetailsBar({ 39 connector, 40 activeTabId, 41 cloneSelectedRequest, 42 request, 43 selectTab, 44 sourceMapURLService, 45 toggleNetworkDetails, 46 openNetworkDetails, 47 openLink, 48 targetSearchResult, 49 defaultRawResponse, 50 setDefaultRawResponse, 51 }) { 52 if (!request) { 53 return null; 54 } 55 56 const newEditAndResendPref = Services.prefs.getBoolPref( 57 "devtools.netmonitor.features.newEditAndResend" 58 ); 59 60 return div( 61 { className: "network-details-bar" }, 62 request.isCustom && !newEditAndResendPref 63 ? CustomRequestPanel({ 64 connector, 65 request, 66 }) 67 : TabboxPanel({ 68 activeTabId, 69 cloneSelectedRequest, 70 connector, 71 openLink, 72 request, 73 selectTab, 74 sourceMapURLService, 75 toggleNetworkDetails, 76 openNetworkDetails, 77 targetSearchResult, 78 defaultRawResponse, 79 setDefaultRawResponse, 80 }) 81 ); 82 } 83 84 NetworkDetailsBar.displayName = "NetworkDetailsBar"; 85 86 NetworkDetailsBar.propTypes = { 87 connector: PropTypes.object.isRequired, 88 activeTabId: PropTypes.string, 89 cloneSelectedRequest: PropTypes.func.isRequired, 90 open: PropTypes.bool, 91 request: PropTypes.object, 92 selectTab: PropTypes.func.isRequired, 93 sourceMapURLService: PropTypes.object, 94 toggleNetworkDetails: PropTypes.func.isRequired, 95 openLink: PropTypes.func, 96 openNetworkDetails: PropTypes.func, 97 targetSearchResult: PropTypes.object, 98 defaultRawResponse: PropTypes.bool, 99 setDefaultRawResponse: PropTypes.func, 100 }; 101 102 module.exports = connect( 103 state => ({ 104 activeTabId: state.ui.detailsPanelSelectedTab, 105 defaultRawResponse: state.ui.defaultRawResponse, 106 request: getSelectedRequest(state), 107 targetSearchResult: state.search.targetSearchResult, 108 }), 109 dispatch => ({ 110 cloneSelectedRequest: () => dispatch(Actions.cloneSelectedRequest()), 111 selectTab: tabId => dispatch(Actions.selectDetailsPanelTab(tabId)), 112 toggleNetworkDetails: () => dispatch(Actions.toggleNetworkDetails()), 113 openNetworkDetails: open => dispatch(Actions.openNetworkDetails(open)), 114 setDefaultRawResponse: open => 115 dispatch(Actions.setDefaultRawResponse(open)), 116 }) 117 )(NetworkDetailsBar);