From 91b89826eac1df30ad76ea2377b979cfc1276811 Mon Sep 17 00:00:00 2001 From: Nathan Bierema Date: Mon, 30 Aug 2021 05:21:32 +0000 Subject: [PATCH] feat(extension): use persist from app (#821) * feat(extension): use persist from app * Fix imports --- extension/src/app/middlewares/api.ts | 7 +++--- extension/src/app/middlewares/panelSync.ts | 12 ++++------ extension/src/app/middlewares/windowSync.ts | 9 +++---- .../src/app/reducers/background/index.ts | 3 --- .../app/reducers/background/persistStates.ts | 6 ----- extension/src/app/reducers/panel/index.ts | 24 +++++++++---------- extension/src/app/stores/backgroundStore.ts | 7 ------ extension/src/app/stores/windowStore.ts | 7 ------ .../src/browser/extension/devpanel/index.tsx | 6 ++--- 9 files changed, 24 insertions(+), 57 deletions(-) delete mode 100644 extension/src/app/reducers/background/persistStates.ts diff --git a/extension/src/app/middlewares/api.ts b/extension/src/app/middlewares/api.ts index b6dd67c0..ce36b002 100644 --- a/extension/src/app/middlewares/api.ts +++ b/extension/src/app/middlewares/api.ts @@ -355,7 +355,7 @@ function getReducerError() { function togglePersist() { const state = window.store.getState(); - if (state.persistStates) { + if (state.instances.persisted) { Object.keys(state.instances.connections).forEach((id) => { if (connections.tab[id]) return; window.store.dispatch({ type: REMOVE_INSTANCE, id }); @@ -492,7 +492,7 @@ function disconnect( if (p) p.onDisconnect.removeListener(disconnectListener); delete connections[type][id]; if (type === 'tab') { - if (!window.store.getState().persistStates) { + if (!window.store.getState().instances.persisted) { window.store.dispatch({ type: REMOVE_INSTANCE, id }); toMonitors({ type: 'NA', id }); } @@ -522,7 +522,7 @@ function onConnect>(port: chrome.runtime.Port) { if (isMonitored) port.postMessage({ type: 'START' }); const state = window.store.getState(); - if (state.persistStates) { + if (state.instances.persisted) { const instanceId = `${id}/${msg.instanceId}`; const persistedState = state.instances.states[instanceId]; if (!persistedState) return; @@ -585,7 +585,6 @@ window.syncOptions = syncOptions(toAllTabs); // Expose to the options page export default function api() { return (next: Dispatch) => (action: BackgroundAction) => { if (action.type === LIFTED_ACTION) toContentScript(action); - else if (action.type === 'TOGGLE_PERSIST') togglePersist(); return next(action); }; } diff --git a/extension/src/app/middlewares/panelSync.ts b/extension/src/app/middlewares/panelSync.ts index 488708b3..558524c0 100644 --- a/extension/src/app/middlewares/panelSync.ts +++ b/extension/src/app/middlewares/panelSync.ts @@ -6,17 +6,15 @@ import { import { getActiveInstance } from '@redux-devtools/app/lib/reducers/instances'; import { Dispatch, MiddlewareAPI } from 'redux'; import { StoreState } from '@redux-devtools/app/lib/reducers'; -import { StoreActionWithTogglePersist } from '../stores/windowStore'; +import { StoreAction } from '@redux-devtools/app/lib/actions'; function panelDispatcher(bgConnection: chrome.runtime.Port) { let autoselected = false; const tabId = chrome.devtools.inspectedWindow.tabId; - return ( - store: MiddlewareAPI, StoreState> - ) => - (next: Dispatch) => - (action: StoreActionWithTogglePersist) => { + return (store: MiddlewareAPI, StoreState>) => + (next: Dispatch) => + (action: StoreAction) => { const result = next(action); if (!autoselected && action.type === UPDATE_STATE && tabId) { autoselected = true; @@ -25,7 +23,7 @@ function panelDispatcher(bgConnection: chrome.runtime.Port) { next({ type: SELECT_INSTANCE, selected: connections[0] }); } } - if (action.type === LIFTED_ACTION || action.type === 'TOGGLE_PERSIST') { + if (action.type === LIFTED_ACTION) { const instances = store.getState().instances; const instanceId = getActiveInstance(instances); const id = instances.options[instanceId].connectionId; diff --git a/extension/src/app/middlewares/windowSync.ts b/extension/src/app/middlewares/windowSync.ts index f8823ba8..fb5cb549 100644 --- a/extension/src/app/middlewares/windowSync.ts +++ b/extension/src/app/middlewares/windowSync.ts @@ -6,10 +6,7 @@ import { getActiveInstance } from '@redux-devtools/app/lib/reducers/instances'; import { Dispatch, MiddlewareAPI, Store } from 'redux'; import { BackgroundState } from '../reducers/background'; import { StoreAction } from '@redux-devtools/app/lib/actions'; -import { - WindowStoreAction, - StoreActionWithTogglePersist, -} from '../stores/windowStore'; +import { WindowStoreAction } from '../stores/windowStore'; import { StoreState } from '@redux-devtools/app/lib/reducers'; import { BackgroundAction } from '../stores/backgroundStore'; @@ -17,14 +14,14 @@ const syncStores = (baseStore: Store) => (store: MiddlewareAPI, StoreState>) => (next: Dispatch) => - (action: StoreActionWithTogglePersist) => { + (action: StoreAction) => { if (action.type === UPDATE_STATE) { return next({ ...action, instances: baseStore.getState().instances, }); } - if (action.type === LIFTED_ACTION || action.type === 'TOGGLE_PERSIST') { + if (action.type === LIFTED_ACTION) { const instances = store.getState().instances; const instanceId = getActiveInstance(instances); const id = instances.options[instanceId].connectionId; diff --git a/extension/src/app/reducers/background/index.ts b/extension/src/app/reducers/background/index.ts index d2d607ed..242541d7 100644 --- a/extension/src/app/reducers/background/index.ts +++ b/extension/src/app/reducers/background/index.ts @@ -2,18 +2,15 @@ import { combineReducers, Reducer } from 'redux'; import instances, { InstancesState, } from '@redux-devtools/app/lib/reducers/instances'; -import persistStates from './persistStates'; import { BackgroundAction } from '../../stores/backgroundStore'; export interface BackgroundState { readonly instances: InstancesState; - readonly persistStates: boolean; } const rootReducer: Reducer = combineReducers({ instances, - persistStates, }); export default rootReducer; diff --git a/extension/src/app/reducers/background/persistStates.ts b/extension/src/app/reducers/background/persistStates.ts deleted file mode 100644 index 90b5c5c7..00000000 --- a/extension/src/app/reducers/background/persistStates.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { BackgroundAction } from '../../stores/backgroundStore'; - -export default function persistStates(state = false, action: BackgroundAction) { - if (action.type === 'TOGGLE_PERSIST') return !state; - return state; -} diff --git a/extension/src/app/reducers/panel/index.ts b/extension/src/app/reducers/panel/index.ts index c3829e6b..50753130 100644 --- a/extension/src/app/reducers/panel/index.ts +++ b/extension/src/app/reducers/panel/index.ts @@ -18,7 +18,7 @@ import theme, { ThemeState } from '@redux-devtools/app/lib/reducers/theme'; import connection, { ConnectionState, } from '@redux-devtools/app/lib/reducers/connection'; -import { StoreActionWithTogglePersist } from '../../stores/windowStore'; +import { StoreAction } from '@redux-devtools/app/lib/actions'; export interface StoreStateWithoutSocket { readonly section: SectionState; @@ -30,17 +30,15 @@ export interface StoreStateWithoutSocket { readonly notification: NotificationState; } -const rootReducer: Reducer< - StoreStateWithoutSocket, - StoreActionWithTogglePersist -> = combineReducers({ - instances, - monitor, - reports, - notification, - section, - theme, - connection, -}); +const rootReducer: Reducer = + combineReducers({ + instances, + monitor, + reports, + notification, + section, + theme, + connection, + }); export default rootReducer; diff --git a/extension/src/app/stores/backgroundStore.ts b/extension/src/app/stores/backgroundStore.ts index ace3e77e..4ca94f9c 100644 --- a/extension/src/app/stores/backgroundStore.ts +++ b/extension/src/app/stores/backgroundStore.ts @@ -45,12 +45,6 @@ export type LiftedActionAction = | LiftedActionActionAction | LiftedActionExportAction; -interface TogglePersistAction { - readonly type: 'TOGGLE_PERSIST'; - readonly instanceId: string | number; - readonly id: string | number | undefined; -} - interface ConnectedAction { readonly type: typeof CONNECTED; } @@ -62,7 +56,6 @@ interface DisconnectedAction { export type BackgroundAction = | StoreActionWithoutLiftedAction | LiftedActionAction - | TogglePersistAction | ConnectedAction | DisconnectedAction; diff --git a/extension/src/app/stores/windowStore.ts b/extension/src/app/stores/windowStore.ts index fa1b406c..189adcd1 100644 --- a/extension/src/app/stores/windowStore.ts +++ b/extension/src/app/stores/windowStore.ts @@ -23,19 +23,12 @@ import { BackgroundState } from '../reducers/background'; import { BackgroundAction } from './backgroundStore'; import { EmptyUpdateStateAction, NAAction } from '../middlewares/api'; -export interface TogglePersistAction { - readonly type: 'TOGGLE_PERSIST'; -} - -export type StoreActionWithTogglePersist = StoreAction | TogglePersistAction; - export interface ExpandedUpdateStateAction extends UpdateStateAction { readonly instances: InstancesState; } export type WindowStoreAction = | StoreActionWithoutUpdateState - | TogglePersistAction | ExpandedUpdateStateAction | NAAction | EmptyUpdateStateAction; diff --git a/extension/src/browser/extension/devpanel/index.tsx b/extension/src/browser/extension/devpanel/index.tsx index ab617331..7847a5e9 100644 --- a/extension/src/browser/extension/devpanel/index.tsx +++ b/extension/src/browser/extension/devpanel/index.tsx @@ -9,8 +9,8 @@ import getPreloadedState from '../background/getPreloadedState'; import '../../views/devpanel.pug'; import { Action, PreloadedState, Store } from 'redux'; import { StoreState } from '@redux-devtools/app/lib/reducers'; +import { StoreAction } from '@redux-devtools/app/lib/actions'; import { PanelMessage } from '../../../app/middlewares/api'; -import { StoreActionWithTogglePersist } from '../../../app/stores/windowStore'; import { StoreStateWithoutSocket } from '../../../app/reducers/panel'; const position = location.hash; @@ -21,9 +21,7 @@ const messageStyle: CSSProperties = { }; let rendered: boolean | undefined; -let store: - | Store - | undefined; +let store: Store | undefined; let bgConnection: chrome.runtime.Port; let naTimeout: NodeJS.Timeout; let preloadedState: PreloadedState;