Skip to content

Commit 9aa7589

Browse files
committed
feature: export reselect
1 parent 5a8ba51 commit 9aa7589

File tree

3 files changed

+62
-59
lines changed

3 files changed

+62
-59
lines changed

lib/redux_toolkit.dart

Lines changed: 2 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,4 @@
11
library redux_toolkit;
22

3-
import 'package:redux/redux.dart';
4-
5-
typedef CaseReducer<State, Action> = State Function(State, Action);
6-
typedef DefaultCaseReducer<State> = State Function(State);
7-
typedef BuilderCallback<State> = Function(ActionReducerMapBuilder<State>);
8-
9-
abstract class ActionReducerMapBuilder<State> {
10-
ActionReducerMapBuilder<State> addCase<Action>(CaseReducer<State, Action> reducer);
11-
ActionReducerMapBuilder<State> addDefaultCase(DefaultCaseReducer<State> reducer);
12-
ActionReducerMap<State> build();
13-
}
14-
15-
abstract class ActionReducerMap<State> {
16-
CaseReducer<State, dynamic> getReducerForAction(Type action);
17-
}
18-
19-
class _ActionReducerMapBuilder<State> implements ActionReducerMapBuilder<State>, ActionReducerMap<State> {
20-
final Map<Type, CaseReducer<State, dynamic>> _actionsMap = {};
21-
CaseReducer<State, dynamic> _defaultCaseReducer = (state, action) => state;
22-
23-
ActionReducerMapBuilder<State> addCase<Action>(CaseReducer<State, Action> reducer) {
24-
_actionsMap[Action] = (state, action) => reducer(state, action);
25-
return this;
26-
}
27-
28-
ActionReducerMapBuilder<State> addDefaultCase(DefaultCaseReducer<State> reducer) {
29-
_defaultCaseReducer = (state, action) => reducer(state);
30-
return this;
31-
}
32-
33-
ActionReducerMap<State> build() {
34-
return this;
35-
}
36-
37-
CaseReducer<State, dynamic> getReducerForAction(Type action) {
38-
if (_actionsMap.containsKey(action)) {
39-
return _actionsMap[action];
40-
}
41-
42-
return _defaultCaseReducer;
43-
}
44-
}
45-
46-
Reducer<State> createReducer<State>(State initialState, BuilderCallback<State> builderCallback) {
47-
final builder = _ActionReducerMapBuilder<State>();
48-
builderCallback(builder);
49-
final actionReducerMap = builder.build();
50-
51-
return (state, action) {
52-
if (state == null) {
53-
state = initialState;
54-
}
55-
56-
return actionReducerMap.getReducerForAction(action.runtimeType)(state, action);
57-
};
58-
}
3+
export 'package:reselect/reselect.dart';
4+
export './src/create_reducer.dart';

lib/src/create_reducer.dart

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import 'package:redux/redux.dart';
2+
3+
typedef CaseReducer<State, Action> = State Function(State, Action);
4+
typedef DefaultCaseReducer<State> = State Function(State);
5+
typedef BuilderCallback<State> = Function(ActionReducerMapBuilder<State>);
6+
7+
abstract class ActionReducerMapBuilder<State> {
8+
ActionReducerMapBuilder<State> addCase<Action>(CaseReducer<State, Action> reducer);
9+
ActionReducerMapBuilder<State> addDefaultCase(DefaultCaseReducer<State> reducer);
10+
ActionReducerMap<State> build();
11+
}
12+
13+
abstract class ActionReducerMap<State> {
14+
CaseReducer<State, dynamic> getReducerForAction(Type action);
15+
}
16+
17+
class _ActionReducerMapBuilder<State> implements ActionReducerMapBuilder<State>, ActionReducerMap<State> {
18+
final Map<Type, CaseReducer<State, dynamic>> _actionsMap = {};
19+
CaseReducer<State, dynamic> _defaultCaseReducer = (state, action) => state;
20+
21+
ActionReducerMapBuilder<State> addCase<Action>(CaseReducer<State, Action> reducer) {
22+
_actionsMap[Action] = (state, action) => reducer(state, action);
23+
return this;
24+
}
25+
26+
ActionReducerMapBuilder<State> addDefaultCase(DefaultCaseReducer<State> reducer) {
27+
_defaultCaseReducer = (state, action) => reducer(state);
28+
return this;
29+
}
30+
31+
ActionReducerMap<State> build() {
32+
return this;
33+
}
34+
35+
CaseReducer<State, dynamic> getReducerForAction(Type action) {
36+
if (_actionsMap.containsKey(action)) {
37+
return _actionsMap[action];
38+
}
39+
40+
return _defaultCaseReducer;
41+
}
42+
}
43+
44+
Reducer<State> createReducer<State>(State initialState, BuilderCallback<State> builderCallback) {
45+
final builder = _ActionReducerMapBuilder<State>();
46+
builderCallback(builder);
47+
final actionReducerMap = builder.build();
48+
49+
return (state, action) {
50+
if (state == null) {
51+
state = initialState;
52+
}
53+
54+
return actionReducerMap.getReducerForAction(action.runtimeType)(state, action);
55+
};
56+
}

pubspec.yaml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ description: Dart port of the official, opinionated, batteries-included toolset
33
version: 0.0.1
44

55
environment:
6-
sdk: '>=2.0.0-dev.28.0 <3.0.0'
6+
sdk: '>=2.0.0-dev.28.0 <3.0.0'
77

88
dependencies:
9-
redux: ^4.0.0+2
9+
redux: ^4.0.0+2
10+
reselect: ^0.4.0
1011

1112
dev_dependencies:
12-
test: ^1.3.0
13+
test: ^1.3.0

0 commit comments

Comments
 (0)