Skip to content

Commit 55b15a6

Browse files
wthosmithad15
authored andcommitted
feat: add new devtools window prop name (#58)
Adds support for the new '__REDUX_DEVTOOLS_EXTENSION__' window property
1 parent ae52528 commit 55b15a6

File tree

3 files changed

+35
-7
lines changed

3 files changed

+35
-7
lines changed

packages/store/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
"rxjs": "^6.0.0"
3333
},
3434
"devDependencies": {
35+
"redux-devtools-extension": "^2.13.7",
3536
"typedoc": "0.11.1",
3637
"typedoc-plugin-sourcefile-url": "1.0.3"
3738
},

packages/store/src/components/dev-tools.ts

+29-7
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,24 @@
11
import { ApplicationRef, Injectable, NgZone } from '@angular/core';
2-
import { Unsubscribe } from 'redux';
2+
import { AnyAction, StoreEnhancer, Unsubscribe } from 'redux';
3+
import { EnhancerOptions } from 'redux-devtools-extension';
34
import { NgRedux } from './ng-redux';
45

5-
declare const window: any;
6-
const environment: any = typeof window !== 'undefined' ? window : {};
6+
export interface ReduxDevTools {
7+
(options: EnhancerOptions): StoreEnhancer<any>;
8+
listen: (
9+
onMessage: (message: AnyAction) => void,
10+
instanceId?: string,
11+
) => void;
12+
}
13+
14+
interface WindowWithReduxDevTools extends Window {
15+
__REDUX_DEVTOOLS_EXTENSION__?: ReduxDevTools;
16+
devToolsExtension?: ReduxDevTools;
17+
}
18+
19+
const environment: WindowWithReduxDevTools = (typeof window !== 'undefined'
20+
? window
21+
: {}) as WindowWithReduxDevTools;
722

823
/**
924
* An angular-2-ified version of the Redux DevTools chrome extension.
@@ -22,14 +37,14 @@ export class DevToolsExtension {
2237
* format as described here:
2338
* [zalmoxisus/redux-devtools-extension/blob/master/docs/API/Arguments.md]
2439
*/
25-
enhancer = (options?: object) => {
40+
enhancer = (options?: EnhancerOptions) => {
2641
let subscription: Unsubscribe;
2742
if (!this.isEnabled()) {
2843
return null;
2944
}
3045

3146
// Make sure changes from dev tools update angular's view.
32-
environment.devToolsExtension.listen(({ type }: any) => {
47+
this.getDevTools()!.listen(({ type }) => {
3348
if (type === 'START') {
3449
subscription = this.ngRedux.subscribe(() => {
3550
if (!NgZone.isInAngularZone()) {
@@ -41,11 +56,18 @@ export class DevToolsExtension {
4156
}
4257
});
4358

44-
return environment.devToolsExtension(options);
59+
return this.getDevTools()!(options || {});
4560
};
4661

4762
/**
4863
* Returns true if the extension is installed and enabled.
4964
*/
50-
isEnabled = () => environment && environment.devToolsExtension;
65+
isEnabled = () => !!this.getDevTools();
66+
67+
/**
68+
* Returns the redux devtools enhancer.
69+
*/
70+
getDevTools = () =>
71+
environment &&
72+
(environment.__REDUX_DEVTOOLS_EXTENSION__ || environment.devToolsExtension);
5173
}

yarn.lock

+5
Original file line numberDiff line numberDiff line change
@@ -8661,6 +8661,11 @@ redent@^2.0.0:
86618661
indent-string "^3.0.0"
86628662
strip-indent "^2.0.0"
86638663

8664+
redux-devtools-extension@^2.13.7:
8665+
version "2.13.7"
8666+
resolved "https://registry.yarnpkg.com/redux-devtools-extension/-/redux-devtools-extension-2.13.7.tgz#14bd7a1a7c8bee7f397beb1116fd16fc9633b752"
8667+
integrity sha512-F2GlWMWxCTJGRjJ+GSZcGDcVAj6Pbf77FKb4C9S8eni5Eah6UBGNwxNj8K1MTtmItdZH1Wx+EvIifHN2KKcQrw==
8668+
86648669
redux-logger@2.10.2:
86658670
version "2.10.2"
86668671
resolved "https://registry.yarnpkg.com/redux-logger/-/redux-logger-2.10.2.tgz#3c5a5f0a6f32577c1deadf6655f257f82c6c3937"

0 commit comments

Comments
 (0)