Skip to content

Commit 80908a2

Browse files
authored
Merge pull request #97 from davidmarne/7.5.0
7.5.0
2 parents a6bd24c + 5bb06c9 commit 80908a2

File tree

7 files changed

+55
-38
lines changed

7 files changed

+55
-38
lines changed

Diff for: CHANGELOG.md

+6
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## 7.5.0
2+
3+
* allow 4.x.x of built_collection
4+
* added combineReducerBuilder to NestedReducerBuilder
5+
* added a NestedMiddlewareBuilder
6+
17
## 7.4.5
28

39
* open sdk range to dart 2!

Diff for: doc/basics/reducers.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
Reducers specify how the application's state changes in response to actions sent to the store. Remember that actions only describe the fact that something happened, but don't describe how the application's state changes.
66

7-
## Writing a reducer
7+
## Writing a reducer
88

99
Say I'm working on the counter app discussed in the [Actions](actions.md) section. This means I've defined my apps actions as:
1010

@@ -20,9 +20,9 @@ abstract class AppActions extends ReduxActions {
2020
and my state object as so:
2121

2222
```dart
23-
abstract class Counter implements Built<Counter, CounterBuilder> {
24-
Counter._();
25-
factory Counter() => new _$Counter._(count: 0);
23+
abstract class App implements Built<App, AppBuilder> {
24+
App._();
25+
factory App() => new _$App._(count: 0);
2626
2727
int get count;
2828
}

Diff for: lib/src/middleware.dart

+4-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,10 @@ class NestedMiddlewareBuilder<
101101
};
102102
}
103103

104-
void addAll(
104+
/// [combineMiddlewareBuilder] takes a `MiddlewareBuilder` with the type arguments
105+
/// `NestedState`, `NestedStateBuilder`, `NestedActions` and combines it with
106+
/// this `NestedMiddlewareBuilder`.
107+
void combineMiddlewareBuilder(
105108
MiddlewareBuilder<NestedState, NestedStateBuilder, NestedActions> other) {
106109
var adapted = other._map.map((name, handler) => MapEntry(
107110
name,

Diff for: lib/src/reducer_builder.dart

+14-11
Original file line numberDiff line numberDiff line change
@@ -124,17 +124,6 @@ class NestedReducerBuilder<
124124

125125
NestedReducerBuilder(this._stateMapper, this._builderMapper);
126126

127-
void addAll(ReducerBuilder<NestedState, NestedStateBuilder> other) {
128-
final adapted = other._map.map((name, reducer) => MapEntry(
129-
name,
130-
(State state, Action<dynamic> action, StateBuilder builder) => reducer(
131-
_stateMapper(state),
132-
action,
133-
_builderMapper(builder),
134-
)));
135-
_map.addAll(adapted);
136-
}
137-
138127
/// Registers [reducer] function to the given [actionName]
139128
void add<Payload>(ActionName<Payload> actionName,
140129
Reducer<NestedState, NestedStateBuilder, Payload> reducer) {
@@ -144,6 +133,20 @@ class NestedReducerBuilder<
144133
_builderMapper(builder),
145134
);
146135
}
136+
137+
/// [combineReducerBuilder] takes a `ReducerBuilder` with the type arguments
138+
/// `NestedState`, `NestedStateBuilder`, and combines it with this `NestedReducerBuilder`.
139+
void combineReducerBuilder(
140+
ReducerBuilder<NestedState, NestedStateBuilder> other) {
141+
final adapted = other._map.map((name, reducer) => MapEntry(
142+
name,
143+
(State state, Action<dynamic> action, StateBuilder builder) => reducer(
144+
_stateMapper(state),
145+
action,
146+
_builderMapper(builder),
147+
)));
148+
_map.addAll(adapted);
149+
}
147150
}
148151

149152
/// [AbstractReducerBuilder] returns a reducer builder that

Diff for: pubspec.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: built_redux
2-
version: 7.4.6
2+
version: 7.5.0
33
description:
44
A state management library written in dart that enforces immutability
55
authors:

Diff for: test/unit/nested_models.dart

+2-4
Original file line numberDiff line numberDiff line change
@@ -98,11 +98,9 @@ NestedReducerBuilder<Base, BaseBuilder, Grandchild, GrandchildBuilder>
9898
BaseBuilder,
9999
Grandchild,
100100
GrandchildBuilder>((s) => s.child.grandchild, (b) => b.child.grandchild)
101-
..addAll(getGrandchildReducer());
101+
..combineReducerBuilder(getGrandchildReducer());
102102

103103
ReducerBuilder<Grandchild, GrandchildBuilder> getGrandchildReducer() =>
104-
new ReducerBuilder<
105-
Grandchild,
106-
GrandchildBuilder>()
104+
new ReducerBuilder<Grandchild, GrandchildBuilder>()
107105
..add<Null>(
108106
GrandchildActionsNames.grandchildAction, (s, a, b) => b.count++);

Diff for: test/unit/test_counter.dart

+24-17
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ void _incrementSubCount(
4141
final reducer = (new ReducerBuilder<Counter, CounterBuilder>()
4242
..add(CounterActionsNames.increment, _increment)
4343
..combine(_otherReducer)
44-
..add(SubCounterActionsNames.increment, _incrementSubCount)
45-
).build();
44+
..add(SubCounterActionsNames.increment, _incrementSubCount))
45+
.build();
4646

4747
final _otherReducer = (new ReducerBuilder<Counter, CounterBuilder>()
4848
..add(CounterActionsNames.incrementOther, _incrementOther));
@@ -80,11 +80,11 @@ abstract class MiddlewareActions extends ReduxActions {
8080
}
8181

8282
var counterMiddleware =
83-
(new MiddlewareBuilder<Counter, CounterBuilder, CounterActions>()
84-
..add(MiddlewareActionsNames.doubleIt, _doubleIt)
85-
..combine(tripleItMiddlewareBuilder)
86-
..combineNested(subCountNested)
87-
).build();
83+
(new MiddlewareBuilder<Counter, CounterBuilder, CounterActions>()
84+
..add(MiddlewareActionsNames.doubleIt, _doubleIt)
85+
..combine(tripleItMiddlewareBuilder)
86+
..combineNested(subCountNested))
87+
.build();
8888

8989
void _doubleIt(MiddlewareApi<Counter, CounterBuilder, CounterActions> api,
9090
ActionHandler next, Action<int> action) {
@@ -102,16 +102,23 @@ void _tripleIt(MiddlewareApi<Counter, CounterBuilder, CounterActions> api,
102102
next(action);
103103
}
104104

105-
var subCountNested = NestedMiddlewareBuilder<Counter, CounterBuilder,
106-
CounterActions, SubCounter, SubCounterBuilder, SubCounterActions>(
107-
(c) => c.subCounter, (a) => a.subCounterActions)
108-
..addAll(subCountMiddlewareBuilder);
109-
110-
var subCountMiddlewareBuilder = new MiddlewareBuilder<SubCounter, SubCounterBuilder, SubCounterActions>()
111-
..add(SubCounterActionsNames.doubleIt, _subCounterDoubleIt);
112-
113-
void _subCounterDoubleIt(MiddlewareApi<SubCounter, SubCounterBuilder, SubCounterActions> api,
114-
ActionHandler next, Action<int> action) {
105+
var subCountNested = NestedMiddlewareBuilder<
106+
Counter,
107+
CounterBuilder,
108+
CounterActions,
109+
SubCounter,
110+
SubCounterBuilder,
111+
SubCounterActions>((c) => c.subCounter, (a) => a.subCounterActions)
112+
..combineMiddlewareBuilder(subCountMiddlewareBuilder);
113+
114+
var subCountMiddlewareBuilder =
115+
new MiddlewareBuilder<SubCounter, SubCounterBuilder, SubCounterActions>()
116+
..add(SubCounterActionsNames.doubleIt, _subCounterDoubleIt);
117+
118+
void _subCounterDoubleIt(
119+
MiddlewareApi<SubCounter, SubCounterBuilder, SubCounterActions> api,
120+
ActionHandler next,
121+
Action<int> action) {
115122
api.actions.increment(api.state.subCount * 2);
116123
next(action);
117124
}

0 commit comments

Comments
 (0)