diff --git a/extension/src/background/store/apiMiddleware.ts b/extension/src/background/store/apiMiddleware.ts index 516ab343..34fce2df 100644 --- a/extension/src/background/store/apiMiddleware.ts +++ b/extension/src/background/store/apiMiddleware.ts @@ -161,10 +161,6 @@ export type UpdateStateRequest> = | SerializedActionMessage | SerializedStateMessage; -export interface EmptyUpdateStateAction { - readonly type: typeof UPDATE_STATE; -} - interface UpdateStateAction> { readonly type: typeof UPDATE_STATE; request: UpdateStateRequest; @@ -213,11 +209,6 @@ export type PanelMessage> = export type PanelMessageWithSplitAction> = | PanelMessage | SplitUpdateStateAction; -export type MonitorMessage = - | NAAction - | ErrorMessage - | EmptyUpdateStateAction - | SetPersistAction; type TabPort = Omit & { postMessage: (message: TabMessage) => void; @@ -227,20 +218,15 @@ type PanelPort = Omit & { message: PanelMessageWithSplitAction, ) => void; }; -type MonitorPort = Omit & { - postMessage: (message: MonitorMessage) => void; -}; export const CONNECTED = 'socket/CONNECTED'; export const DISCONNECTED = 'socket/DISCONNECTED'; const connections: { readonly tab: { [K in number | string]: TabPort }; readonly panel: { [K in number | string]: PanelPort }; - readonly monitor: { [K in number | string]: MonitorPort }; } = { tab: {}, panel: {}, - monitor: {}, }; const chunks: { [instanceId: string]: PageScriptToContentScriptMessageForwardedToMonitors< @@ -263,10 +249,7 @@ type MonitorAction> = const maxChromeMsgSize = 32 * 1024 * 1024; function toMonitors>(action: MonitorAction) { - for (const port of [ - ...Object.values(connections.monitor), - ...Object.values(connections.panel), - ]) { + for (const port of Object.values(connections.panel)) { try { port.postMessage(action); } catch (err) { @@ -411,15 +394,11 @@ function toAllTabs(msg: TabMessage) { } } -function monitorInstances(id?: string) { +function monitorInstances(shouldMonitor: boolean) { const action = { - type: monitors > 0 ? ('START' as const) : ('STOP' as const), + type: shouldMonitor ? ('START' as const) : ('STOP' as const), }; - if (id) { - if (connections.tab[id]) connections.tab[id].postMessage(action); - } else { - toAllTabs(action); - } + toAllTabs(action); } function getReducerError() { @@ -433,11 +412,11 @@ function getReducerError() { function togglePersist() { const state = store.getState(); if (state.instances.persisted) { - Object.keys(state.instances.connections).forEach((id) => { + for (const id of Object.keys(state.instances.connections)) { if (connections.tab[id]) return; store.dispatch({ type: REMOVE_INSTANCE, id }); toMonitors({ type: 'NA', id }); - }); + } } } @@ -540,7 +519,7 @@ function messaging>( } function disconnect( - type: 'tab' | 'monitor' | 'panel', + type: 'tab' | 'panel', id: number | string, listener?: (message: any, port: chrome.runtime.Port) => void, ) { @@ -556,7 +535,7 @@ function disconnect( } } else { monitors--; - if (monitors == 0) monitorInstances(); + if (monitors == 0) monitorInstances(false); } }; } @@ -604,28 +583,17 @@ function onConnect>(port: chrome.runtime.Port) { port.onMessage.addListener(listener); port.onDisconnect.addListener(disconnect('tab', id, listener)); } else if (port.name && port.name.indexOf('monitor') === 0) { - id = getId(port.sender!, port.name); - connections.monitor[id] = port; - monitors++; - monitorInstances(); - listener = (msg: BackgroundAction | 'heartbeat') => { - if (msg === 'heartbeat') return; - store.dispatch(msg); - }; - port.onMessage.addListener(listener); - port.onDisconnect.addListener(disconnect('monitor', id)); - } else { // devpanel - id = port.name || port.sender!.frameId!; + id = getId(port.sender!, port.name); connections.panel[id] = port; monitors++; - monitorInstances(port.name); + monitorInstances(true); listener = (msg: BackgroundAction | 'heartbeat') => { if (msg === 'heartbeat') return; store.dispatch(msg); }; port.onMessage.addListener(listener); - port.onDisconnect.addListener(disconnect('panel', id, listener)); + port.onDisconnect.addListener(disconnect('panel', id)); } }