@@ -13,6 +13,11 @@ protected override void BuildRenderTree(RenderTreeBuilder builder)
13
13
builder . OpenElement ( seq ++ , "script" ) ;
14
14
builder . AddContent ( seq ++ ,
15
15
@"(function () {
16
+ function timeTravel(state) {
17
+ const timeTravel = Blazor.platform.findMethod('BlazorRedux', 'BlazorRedux', 'DevToolsInterop', 'TimeTravelFromJs');
18
+ Blazor.platform.callMethod(timeTravel, null, [ Blazor.platform.toDotNetString(JSON.stringify(state)) ]);
19
+ }
20
+
16
21
Blazor.registerFunction('log', (action, state) => {
17
22
var json = JSON.parse(state);
18
23
@@ -40,17 +45,42 @@ protected override void BuildRenderTree(RenderTreeBuilder builder)
40
45
}
41
46
42
47
devTools.subscribe((message) => {
43
- if (message.type === 'DISPATCH' && message.state) {
44
- const timeTravel = Blazor.platform.findMethod('BlazorRedux', 'BlazorRedux', 'DevToolsInterop', 'TimeTravelFromJs');
45
- Blazor.platform.callMethod(timeTravel, null, [ Blazor.platform.toDotNetString(message.state) ]);
48
+ if (message.type === 'START') {
49
+ console.log('Connected with Redux DevTools.');
50
+ const devToolsReady = Blazor.platform.findMethod('BlazorRedux', 'BlazorRedux', 'DevToolsInterop', 'DevToolsReady');
51
+ Blazor.platform.callMethod(devToolsReady, null, []);
52
+ }
53
+ else if (message.type === 'DISPATCH' && message.payload) {
54
+ var payload = message.payload;
55
+
56
+ if (payload.type === 'IMPORT_STATE') {
57
+ // Hydration of state from a previous session
58
+ var states = payload.nextLiftedState.computedStates;
59
+ var index = payload.nextLiftedState.currentStateIndex;
60
+ var state = states[index].state;
61
+ timeTravel(state);
62
+ }
63
+ else if (payload.type === 'RESET') {
64
+ // Reset state
65
+ const devToolsReset = Blazor.platform.findMethod('BlazorRedux', 'BlazorRedux', 'DevToolsInterop', 'DevToolsReset');
66
+ Blazor.platform.callMethod(devToolsReset, null, []);
67
+ }
68
+ else {
69
+ console.log('Unhandled payload from Redux DevTools:');
70
+ console.log(payload);
71
+ }
72
+ }
73
+ else if (message.type === 'DISPATCH' && message.state) {
74
+ // Time-traveling
75
+ timeTravel(message.state);
76
+ }
77
+ else {
78
+ console.log('Unhandled message from Redux DevTools:');
79
+ console.log(message);
46
80
}
47
81
});
48
82
49
83
window.devTools = devTools;
50
- console.log('Connected with Redux DevTools.');
51
-
52
- const devToolsReady = Blazor.platform.findMethod('BlazorRedux', 'BlazorRedux', 'DevToolsInterop', 'DevToolsReady');
53
- Blazor.platform.callMethod(devToolsReady, null, []);
54
84
}());" ) ;
55
85
56
86
builder . CloseElement ( ) ;
0 commit comments