Skip to content
This repository was archived by the owner on May 13, 2020. It is now read-only.

Commit 1c664dd

Browse files
committed
Adapt RxReduceDemo to Lens, Mutator and full Rx Stream
1 parent 17deb96 commit 1c664dd

File tree

5 files changed

+30
-14
lines changed

5 files changed

+30
-14
lines changed

RxReduceDemo/Cartfile.resolved

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ github "Alamofire/Alamofire" "4.7.3"
22
github "Alamofire/AlamofireImage" "3.3.1"
33
github "AliSoftware/Reusable" "4.0.3"
44
github "ReactiveX/RxSwift" "4.2.0"
5-
github "twittemb/RxReduce" "80e85d94ce40413b7aa3cded92c0d7b4df33af01"
5+
github "twittemb/RxReduce" "17deb96c30fa7c95e552c1607196511d4ee32f91"

RxReduceDemo/RxReduceDemo.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
1A16F86B20C31E1400D5BE85 /* DiscoverTVResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A16F86820C31E1400D5BE85 /* DiscoverTVResponse.swift */; };
1313
1A16F86C20C31E1400D5BE85 /* DiscoverMovieResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A16F86920C31E1400D5BE85 /* DiscoverMovieResponse.swift */; };
1414
1A16F86D20C31E1400D5BE85 /* Media.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A16F86A20C31E1400D5BE85 /* Media.swift */; };
15+
1A71397C21363E2F00903866 /* AppMutators.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A71397B21363E2F00903866 /* AppMutators.swift */; };
1516
1A74D063212E4A0400BAE637 /* AppLenses.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A74D062212E4A0400BAE637 /* AppLenses.swift */; };
1617
1AAA7E1B20952A7F00BED242 /* RxCocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A3BB49E2093A4F500B1E37F /* RxCocoa.framework */; };
1718
1AAA7E1C20952A7F00BED242 /* RxSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A3BB4A02093A4F500B1E37F /* RxSwift.framework */; };
@@ -48,6 +49,7 @@
4849
1A16F86820C31E1400D5BE85 /* DiscoverTVResponse.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DiscoverTVResponse.swift; sourceTree = "<group>"; };
4950
1A16F86920C31E1400D5BE85 /* DiscoverMovieResponse.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DiscoverMovieResponse.swift; sourceTree = "<group>"; };
5051
1A16F86A20C31E1400D5BE85 /* Media.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Media.swift; sourceTree = "<group>"; };
52+
1A71397B21363E2F00903866 /* AppMutators.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppMutators.swift; sourceTree = "<group>"; };
5153
1A74D062212E4A0400BAE637 /* AppLenses.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppLenses.swift; sourceTree = "<group>"; };
5254
1AAA7E2320952BF900BED242 /* AppState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppState.swift; sourceTree = "<group>"; };
5355
1AAA7E2520952C3300BED242 /* AppActions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppActions.swift; sourceTree = "<group>"; };
@@ -124,6 +126,7 @@
124126
1AFFA38420B25C3400A0BB81 /* AppMiddlewares.swift */,
125127
1AAA7E2520952C3300BED242 /* AppActions.swift */,
126128
1A74D062212E4A0400BAE637 /* AppLenses.swift */,
129+
1A71397B21363E2F00903866 /* AppMutators.swift */,
127130
);
128131
path = State;
129132
sourceTree = "<group>";
@@ -332,6 +335,7 @@
332335
1A16F86D20C31E1400D5BE85 /* Media.swift in Sources */,
333336
1AC102CE20C98D890083BB46 /* MovieListViewModel.swift in Sources */,
334337
1AAA7E2420952BF900BED242 /* AppState.swift in Sources */,
338+
1A71397C21363E2F00903866 /* AppMutators.swift in Sources */,
335339
1AC102BD20C5F8240083BB46 /* UIViewController+ViewModelBased.swift in Sources */,
336340
1AC102C020C5F8610083BB46 /* Injectable.swift in Sources */,
337341
1AC102D820C99CD60083BB46 /* MovieDetailViewModel.swift in Sources */,

RxReduceDemo/RxReduceDemo/AppDelegate.swift

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
2020
private lazy var store: Store<AppState> = {
2121
let store = Store<AppState>(withState: AppState(movieListState: .empty, movieDetailState: .empty))
2222

23-
let movieListMutator = Mutator<AppState, MovieListState>(lens: AppLenses.movieListLens, reducer: movieListReducer)
24-
let movieDetailMutator = Mutator<AppState, MovieDetailState>(lens: AppLenses.movieDetailLens, reducer: movieDetailReducer)
25-
26-
store.register(mutator: movieListMutator)
27-
store.register(mutator: movieDetailMutator)
23+
store.register(mutator: AppMutators.movieListMutator)
24+
store.register(mutator: AppMutators.movieDetailMutator)
2825
store.register(middleware: loggingMiddleware)
2926

3027
return store

RxReduceDemo/RxReduceDemo/State/AppLenses.swift

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,16 @@ import RxReduce
1111

1212
struct AppLenses {
1313

14-
static let movieListLens = Lens<AppState, MovieListState> (get: { $0.movieListState }) { (appState, movieListState) -> MovieListState in
15-
var mutableAppState = appState
16-
mutableAppState.movieListState = movieListState
17-
return mutableAppState
18-
}
14+
static let movieListLens = Lens<AppState, MovieListState>(get: { $0.movieListState }, set: { (appState, movieListState) -> AppState in
15+
var mutableState = appState
16+
mutableState.movieListState = movieListState
17+
return mutableState
18+
})
1919

20-
static let movieDetailLens = Lens<AppState, MovieDetailState>(get: { $0.movieDetailState }) { (state, detailState) -> MovieDetailState in
21-
var mutableState = state
20+
static let movieDetailLens = Lens<AppState, MovieDetailState>(get: { $0.movieDetailState }, set: { (appState, detailState) -> AppState in
21+
var mutableState = appState
2222
mutableState.movieDetailState = detailState
2323
return mutableState
24-
}
24+
})
2525

2626
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
//
2+
// AppMutators.swift
3+
// RxReduceDemo
4+
//
5+
// Created by Thibault Wittemberg on 2018-08-28.
6+
// Copyright © 2018 Wittemberg, Thibault. All rights reserved.
7+
//
8+
9+
import Foundation
10+
import RxReduce
11+
12+
struct AppMutators {
13+
static let movieListMutator = Mutator<AppState, MovieListState>(lens: AppLenses.movieListLens, reducer: movieListReducer)
14+
static let movieDetailMutator = Mutator<AppState, MovieDetailState>(lens: AppLenses.movieDetailLens, reducer: movieDetailReducer)
15+
}

0 commit comments

Comments
 (0)