11/* global chrome */
2+ /** @flow */
23
34// We can't use chrome.storage domain from scripts which are injected in ExecutionWorld.MAIN
45// This is the only purpose of this script - to send persisted settings to installHook.js content script
56
6- async function messageListener ( event : MessageEvent ) {
7+ import type { UnknownMessageEvent } from './messages' ;
8+ import type { DevToolsHookSettings } from 'react-devtools-shared/src/backend/types' ;
9+ import { postMessage } from './messages' ;
10+
11+ async function messageListener ( event : UnknownMessageEvent ) {
712 if ( event . source !== window ) {
813 return ;
914 }
1015
1116 if ( event . data . source === 'react-devtools-hook-installer' ) {
1217 if ( event . data . payload . handshake ) {
13- const settings = await chrome . storage . local . get ( ) ;
18+ const settings : Partial < DevToolsHookSettings > =
19+ await chrome.storage.local.get();
1420 // If storage was empty (first installation), define default settings
15- if ( typeof settings . appendComponentStack !== 'boolean' ) {
16- settings . appendComponentStack = true ;
17- }
18- if ( typeof settings . breakOnConsoleErrors !== 'boolean' ) {
19- settings . breakOnConsoleErrors = false ;
20- }
21- if ( typeof settings . showInlineWarningsAndErrors !== 'boolean' ) {
22- settings . showInlineWarningsAndErrors = true ;
23- }
24- if ( typeof settings . hideConsoleLogsInStrictMode !== 'boolean' ) {
25- settings . hideConsoleLogsInStrictMode = false ;
26- }
27- if (
28- typeof settings . disableSecondConsoleLogDimmingInStrictMode !== 'boolean'
29- ) {
30- settings . disableSecondConsoleLogDimmingInStrictMode = false ;
31- }
21+ const hookSettings: DevToolsHookSettings = {
22+ appendComponentStack :
23+ typeof settings . appendComponentStack === 'boolean'
24+ ? settings . appendComponentStack
25+ : true ,
26+ breakOnConsoleErrors :
27+ typeof settings . breakOnConsoleErrors === 'boolean'
28+ ? settings . breakOnConsoleErrors
29+ : false ,
30+ showInlineWarningsAndErrors :
31+ typeof settings . showInlineWarningsAndErrors === 'boolean'
32+ ? settings . showInlineWarningsAndErrors
33+ : true ,
34+ hideConsoleLogsInStrictMode :
35+ typeof settings . hideConsoleLogsInStrictMode === 'boolean'
36+ ? settings . hideConsoleLogsInStrictMode
37+ : false ,
38+ disableSecondConsoleLogDimmingInStrictMode :
39+ typeof settings . disableSecondConsoleLogDimmingInStrictMode ===
40+ 'boolean'
41+ ? settings . disableSecondConsoleLogDimmingInStrictMode
42+ : false ,
43+ } ;
3244
33- window . postMessage ( {
45+ postMessage({
3446 source : 'react-devtools-hook-settings-injector' ,
35- payload : { settings} ,
47+ payload : { settings : hookSettings } ,
3648 } );
3749
3850 window.removeEventListener('message', messageListener);
@@ -41,7 +53,7 @@ async function messageListener(event: MessageEvent) {
4153}
4254
4355window . addEventListener ( 'message ', messageListener ) ;
44- window . postMessage ( {
56+ postMessage ( {
4557 source : 'react-devtools-hook-settings-injector' ,
4658 payload : { handshake : true } ,
4759} );
0 commit comments