Skip to content

Commit ff22ca4

Browse files
committed
Testing redux-devtools extension
1 parent 5a1330d commit ff22ca4

File tree

3 files changed

+52
-2
lines changed

3 files changed

+52
-2
lines changed

Diff for: examples/Test/Hello.purs

+5-2
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,25 @@ module Test.Hello where
33
import Prelude
44

55
import Concur.Core (Widget)
6+
import Concur.Core.DevTools (connectDevTools, sendToDevTools)
67
import Concur.React (HTML)
78
import Concur.React.DOM (button, text, div')
89
import Concur.React.Props (onClick)
9-
import Effect.Class (liftEffect)
10-
import Effect.Console (log)
1110
import Control.Monad.State.Class (get, put)
1211
import Control.Monad.State.Trans (StateT, runStateT)
1312
import Control.Monad.Trans.Class (lift)
1413
import Data.Tuple (snd)
14+
import Effect.Class (liftEffect)
15+
import Effect.Console (log)
1516

1617
helloWidget :: Widget HTML Int
1718
helloWidget = snd <$> runStateT helloWidgetS 0
1819

1920
helloWidgetS :: forall a. StateT Int (Widget HTML) a
2021
helloWidgetS = do
22+
conn <- liftEffect connectDevTools
2123
count <- get
24+
liftEffect $ sendToDevTools conn "Increment" count
2225
e <- lift $ div'
2326
[ but "Say Hello!"
2427
, but $ "For the " <> show count <> " time, hello sailor!"

Diff for: src/Concur/Core/DevTools.js

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
"use strict";
2+
3+
function hasDevTools() {
4+
return (process.env.NODE_ENV === 'development' && window.__REDUX_DEVTOOLS_EXTENSION__);
5+
}
6+
7+
exports.connectDevTools = function() {
8+
if(hasDevTools()) {
9+
return window.__REDUX_DEVTOOLS_EXTENSION__.connect();
10+
} else {
11+
// ??
12+
return null;
13+
}
14+
};
15+
16+
exports.disconnectDevTools = function() {
17+
if(hasDevTools()) {
18+
return window.__REDUX_DEVTOOLS_EXTENSION__.disconnect();
19+
} else {
20+
// ??
21+
return null;
22+
}
23+
};
24+
25+
exports.sendToDevTools = function(connection) {
26+
return function(action) {
27+
return function(state) {
28+
return function() {
29+
if(hasDevTools()) {
30+
return window.__REDUX_DEVTOOLS_EXTENSION__.send(action, state);
31+
} else {
32+
// ??
33+
return null;
34+
}
35+
};
36+
};
37+
};
38+
};

Diff for: src/Concur/Core/DevTools.purs

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
module Concur.Core.DevTools where
2+
3+
import Data.Unit (Unit)
4+
import Effect (Effect)
5+
6+
data DevToolsConnection
7+
foreign import connectDevTools :: Effect DevToolsConnection
8+
foreign import disconnectDevTools :: Effect Unit
9+
foreign import sendToDevTools :: forall action state. DevToolsConnection -> action -> state -> Effect Unit

0 commit comments

Comments
 (0)