@@ -19,21 +19,20 @@ import '../../panels/timeline/timeline-meta.js';
1919import * as Host from '../../core/host/host.js' ;
2020import * as i18n from '../../core/i18n/i18n.js' ;
2121import * as Root from '../../core/root/root.js' ;
22+ import * as RNExperiments from '../../core/rn_experiments/rn_experiments.js' ;
2223import * as SDK from '../../core/sdk/sdk.js' ;
2324import * as UI from '../../ui/legacy/legacy.js' ;
2425import * as Main from '../main/main.js' ;
2526import * as Common from '../../core/common/common.js' ;
2627import * as Protocol from '../../generated/protocol.js' ;
28+ import FuseboxReconnectDeviceButton from './FuseboxReconnectDeviceButton.js' ;
29+ import FuseboxProfilingBuildObserver from './FuseboxProfilingBuildObserver.js' ;
2730
2831import type * as Platform from '../../core/platform/platform.js' ;
2932import type * as Sources from '../../panels/sources/sources.js' ;
30- import * as RNExperiments from '../../core/rn_experiments/rn_experiments.js' ;
31- import FuseboxProfilingBuildObserver from './FuseboxProfilingBuildObserver.js' ;
3233
33- /*
34- * To ensure accurate timing measurements,
35- * please make sure these perf metrics lines are called ahead of everything else
36- */
34+ // To ensure accurate timing measurements, please make sure these perf metrics
35+ // lines are called ahead of everything else
3736Host . rnPerfMetrics . registerPerfMetricsGlobalPostMessageHandler ( ) ;
3837Host . rnPerfMetrics . registerGlobalErrorReporting ( ) ;
3938Host . rnPerfMetrics . setLaunchId ( Root . Runtime . Runtime . queryParam ( 'launchId' ) ) ;
@@ -52,14 +51,6 @@ const UIStrings = {
5251 *@description Label of the FB-only 'send feedback' action button in the toolbar
5352 */
5453 sendFeedback : '[FB-only] Send feedback' ,
55- /**
56- *@description Tooltip of the connection status toolbar button while disconnected
57- */
58- connectionStatusDisconnectedTooltip : 'Debugging connection was closed' ,
59- /**
60- *@description Button label of the connection status toolbar button while disconnected
61- */
62- connectionStatusDisconnectedLabel : 'Reconnect DevTools' ,
6354} ;
6455const str_ = i18n . i18n . registerUIStrings ( 'entrypoints/rn_fusebox/rn_fusebox.ts' , UIStrings ) ;
6556const i18nLazyString = i18n . i18n . getLazilyComputedLocalizedString . bind ( undefined , str_ ) ;
@@ -141,9 +132,9 @@ if (globalThis.FB_ONLY__reactNativeFeedbackLink) {
141132 if ( incomingActionId !== actionId ) {
142133 return false ;
143134 }
144- Host . InspectorFrontendHost . InspectorFrontendHostInstance . openInNewTab (
145- feedbackLink ,
146- ) ;
135+ Host . InspectorFrontendHost . InspectorFrontendHostInstance . openInNewTab (
136+ feedbackLink ,
137+ ) ;
147138
148139 return true ;
149140 } ,
@@ -166,67 +157,10 @@ if (globalThis.FB_ONLY__reactNativeFeedbackLink) {
166157 } ) ;
167158}
168159
169- class ConnectionStatusToolbarItemProvider extends SDK . TargetManager . Observer implements UI . Toolbar . Provider {
170- #button = new UI . Toolbar . ToolbarButton ( '' ) ;
171-
172- constructor ( ) {
173- super ( ) ;
174- this . #button. setVisible ( false ) ;
175- this . #button. element . classList . add ( 'fusebox-connection-status' ) ;
176- this . #button. addEventListener ( UI . Toolbar . ToolbarButton . Events . Click , this . onClick . bind ( this ) ) ;
177-
178- SDK . TargetManager . TargetManager . instance ( ) . observeTargets ( this , { scoped : true } ) ;
179- }
180-
181- override targetAdded ( target : SDK . Target . Target ) : void {
182- this . #onTargetChanged( target ) ;
183- }
184-
185- override targetRemoved ( target : SDK . Target . Target ) : void {
186- this . #onTargetChanged( target ) ;
187- }
188-
189- #onTargetChanged( target : SDK . Target . Target ) : void {
190- const rootTarget = SDK . TargetManager . TargetManager . instance ( ) . rootTarget ( ) ;
191- this . #button. setTitle ( i18nLazyString ( UIStrings . connectionStatusDisconnectedTooltip ) ( ) ) ;
192- this . #button. setText ( i18nLazyString ( UIStrings . connectionStatusDisconnectedLabel ) ( ) ) ;
193- this . #button. setVisible ( ! rootTarget ) ;
194-
195- if ( ! rootTarget ) {
196- this . #printPreserveLogPrompt( target ) ;
197- }
198- }
199-
200- #printPreserveLogPrompt( target : SDK . Target . Target ) : void {
201- if ( Common . Settings . Settings . instance ( ) . moduleSetting ( 'preserve-console-log' ) . get ( ) ) {
202- return ;
203- }
204-
205- target . model ( SDK . ConsoleModel . ConsoleModel )
206- ?. addMessage ( new SDK . ConsoleModel . ConsoleMessage (
207- target . model ( SDK . RuntimeModel . RuntimeModel ) , Protocol . Log . LogEntrySource . Recommendation ,
208- Protocol . Log . LogEntryLevel . Info ,
209- '[React Native] Console messages are currently cleared upon DevTools disconnection. You can preserve logs in settings: ' ,
210- {
211- type : SDK . ConsoleModel . FrontendMessageType . System ,
212- context : 'fusebox_preserve_log_rec' ,
213- } ) ) ;
214- }
215-
216- onClick ( ) : void {
217- window . location . reload ( ) ;
218- }
219-
220- item ( ) : UI . Toolbar . ToolbarItem {
221- return this . #button;
222- }
223- }
224-
225- const connectionStatusToolbarItemProvider = new ConnectionStatusToolbarItemProvider ( ) ;
226160UI . Toolbar . registerToolbarItem ( {
227161 location : UI . Toolbar . ToolbarItemLocation . MAIN_TOOLBAR_RIGHT ,
228162 loadItem : async ( ) => {
229- return connectionStatusToolbarItemProvider ;
163+ return FuseboxReconnectDeviceButton . instance ( ) ;
230164 } ,
231165} ) ;
232166
0 commit comments