From eb29ce5b7a2007e2335ca375884e78ff6d5d9dd4 Mon Sep 17 00:00:00 2001 From: Dmytro Shulzhenko Date: Sun, 20 Sep 2020 20:27:01 +0300 Subject: [PATCH 01/13] =?UTF-8?q?=E2=80=A2=20Refactoring=20search=20to=20b?= =?UTF-8?q?inders?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tmdb-rx-driver/Podfile | 16 + tmdb-rx-driver/Podfile.lock | 65 ++ .../tmdb-rx-driver.xcodeproj/project.pbxproj | 817 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../tmdb-rx-driver/Application/App.swift | 54 ++ .../Application/AppDelegate.swift | 25 + .../Application/LaunchScreen.storyboard | 25 + .../AppIcon.appiconset/Contents.json | 98 +++ .../Assets.xcassets/Contents.json | 6 + .../aquaman.imageset/Contents.json | 21 + .../aquaman.imageset/aquaman.jpg | Bin 0 -> 242599 bytes .../back_arrow.imageset/Contents.json | 21 + .../icons8-left-100 (1).png | Bin 0 -> 596 bytes .../sample.imageset/Contents.json | 21 + .../sample.imageset/sample.jpg | Bin 0 -> 11208 bytes .../search_icon.imageset/Contents.json | 21 + .../icons8-search-100.png | Bin 0 -> 2863 bytes .../star_icon.imageset/Contents.json | 21 + .../icons8-star-filled-96.png | Bin 0 -> 1661 bytes tmdb-rx-driver/tmdb-rx-driver/Info.plist | 50 ++ .../tmdb-rx-driver/Models/Genre.swift | 14 + .../tmdb-rx-driver/Models/Movie.swift | 35 + .../tmdb-rx-driver/Models/Person.swift | 46 + .../tmdb-rx-driver/Models/Show.swift | 20 + .../Networking/HTTPClient.swift | 38 + .../tmdb-rx-driver/Networking/TMDBApi.swift | 145 ++++ .../Networking/TMDBApiResponses.swift | 33 + .../tmdb-rx-driver/Resource/R.generated.swift | 466 ++++++++++ .../Scenes/Discover/DiscoverNavigator.swift | 42 + .../Discover/DiscoverViewController.swift | 56 ++ .../Scenes/Discover/DiscoverViewModel.swift | 141 +++ .../Discover/Views/CarouselSectionCell.swift | 48 + .../Discover/Views/CarouselSectionCell.xib | 82 ++ .../Discover/Views/DiscoverMainView.swift | 121 +++ .../Discover/Views/DiscoverMainView.xib | 40 + .../Scenes/Discover/Views/MovieCell.swift | 39 + .../Scenes/Discover/Views/MovieCell.xib | 72 ++ .../Scenes/Login/LoginNavigator.swift | 25 + .../Scenes/Login/LoginViewController.swift | 72 ++ .../Scenes/Login/LoginViewModel.swift | 73 ++ .../MovieDetail/MovieDetailNavigator.swift | 24 + .../MovieDetailViewController.swift | 60 ++ .../MovieDetail/MovieDetailViewModel.swift | 92 ++ .../MovieDetail/Views/GradientImageView.swift | 32 + .../Views/MovieDetailHeaderView.swift | 63 ++ .../Views/MovieDetailHeaderView.xib | 129 +++ .../Views/MovieDetailTipsView.swift | 46 + .../MovieDetail/Views/MovieDetailTipsView.xib | 81 ++ .../Scenes/Search/SearchDriver.swift | 93 ++ .../Search/SearchResultItemViewModel.swift | 38 + .../Scenes/Search/SearchViewController.swift | 49 ++ .../SearchViewControllerActionBinder.swift | 39 + .../SearchViewControllerStateBinder.swift | 87 ++ .../Scenes/Search/Views/SearchCell.swift | 38 + .../Scenes/Search/Views/SearchCell.xib | 62 ++ .../Storyboard/Base.lproj/Main.storyboard | 358 ++++++++ .../Utils/ActivityIndicator.swift | 76 ++ .../Utils/Binder/DisposeViewController.swift | 56 ++ .../Utils/Binder/NavigationBinder.swift | 107 +++ .../Utils/Binder/Transitioning.swift | 93 ++ .../Utils/Binder/ViewControllerBinder.swift | 46 + .../Utils/Closure/Closure.swift | 35 + .../Utils/Closure/RawClosure.swift | 30 + .../tmdb-rx-driver/Utils/Closure/Set.swift | 141 +++ .../tmdb-rx-driver/Utils/Closure/Unown.swift | 273 ++++++ .../DefaultInitializable.swift | 27 + .../tmdb-rx-driver/Utils/Log/Level.swift | 25 + .../tmdb-rx-driver/Utils/Log/Log.swift | 11 + .../tmdb-rx-driver/Utils/Log/Logging.swift | 45 + .../tmdb-rx-driver/Utils/Log/Params.swift | 86 ++ .../tmdb-rx-driver/Utils/RxUtils/Bool.swift | 31 + .../Utils/RxUtils/Callable.swift | 23 + .../tmdb-rx-driver/Utils/RxUtils/Driver.swift | 38 + .../tmdb-rx-driver/Utils/RxUtils/Just.swift | 47 + .../tmdb-rx-driver/Utils/RxUtils/Latest.swift | 40 + .../Utils/RxUtils/Loading.swift | 27 + .../Utils/RxUtils/NSObject+Disposable.swift | 13 + .../tmdb-rx-driver/Utils/RxUtils/Next.swift | 16 + .../Utils/RxUtils/Publicsher.swift | 74 ++ .../tmdb-rx-driver/Utils/RxUtils/Util.swift | 357 ++++++++ .../Utils/UIStoryboard+ViewControllers.swift | 45 + .../tmdb-rx-driver/Utils/ViewModelType.swift | 16 + 85 files changed, 5971 insertions(+) create mode 100644 tmdb-rx-driver/Podfile create mode 100644 tmdb-rx-driver/Podfile.lock create mode 100644 tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.pbxproj create mode 100644 tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 tmdb-rx-driver/tmdb-rx-driver.xcworkspace/contents.xcworkspacedata create mode 100644 tmdb-rx-driver/tmdb-rx-driver.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Application/App.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Application/AppDelegate.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Application/LaunchScreen.storyboard create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/Contents.json create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/aquaman.imageset/Contents.json create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/aquaman.imageset/aquaman.jpg create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/back_arrow.imageset/Contents.json create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/back_arrow.imageset/icons8-left-100 (1).png create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/sample.imageset/Contents.json create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/sample.imageset/sample.jpg create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/search_icon.imageset/Contents.json create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/search_icon.imageset/icons8-search-100.png create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/star_icon.imageset/Contents.json create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/star_icon.imageset/icons8-star-filled-96.png create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Info.plist create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Models/Genre.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Models/Movie.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Models/Person.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Models/Show.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Networking/HTTPClient.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Networking/TMDBApi.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Networking/TMDBApiResponses.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Resource/R.generated.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverNavigator.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewController.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewModel.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/CarouselSectionCell.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/CarouselSectionCell.xib create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/DiscoverMainView.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/DiscoverMainView.xib create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/MovieCell.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/MovieCell.xib create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginNavigator.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginViewController.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginViewModel.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailNavigator.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailViewController.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailViewModel.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/GradientImageView.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/MovieDetailHeaderView.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/MovieDetailHeaderView.xib create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/MovieDetailTipsView.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/MovieDetailTipsView.xib create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchDriver.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchResultItemViewModel.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchViewController.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchViewControllerActionBinder.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchViewControllerStateBinder.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/Views/SearchCell.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/Views/SearchCell.xib create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Storyboard/Base.lproj/Main.storyboard create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Utils/ActivityIndicator.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/DisposeViewController.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/NavigationBinder.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/Transitioning.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/ViewControllerBinder.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Utils/Closure/Closure.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Utils/Closure/RawClosure.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Utils/Closure/Set.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Utils/Closure/Unown.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Utils/DefaultInitializable/DefaultInitializable.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Utils/Log/Level.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Utils/Log/Log.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Utils/Log/Logging.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Utils/Log/Params.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Bool.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Callable.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Driver.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Just.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Latest.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Loading.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/NSObject+Disposable.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Next.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Publicsher.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Util.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Utils/UIStoryboard+ViewControllers.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Utils/ViewModelType.swift diff --git a/tmdb-rx-driver/Podfile b/tmdb-rx-driver/Podfile new file mode 100644 index 0000000..8594351 --- /dev/null +++ b/tmdb-rx-driver/Podfile @@ -0,0 +1,16 @@ +# Uncomment the next line to define a global platform for your project +# platform :ios, '9.0' + +target 'tmdb-rx-driver' do + # Comment the next line if you don't want to use dynamic frameworks + use_frameworks! + + pod 'RxSwift', '~> 5' + pod 'RxCocoa', '~> 5' + pod 'RxSwiftExt', '~> 5' + pod 'RxViewController' + pod 'RxDataSources' + pod 'R.swift' + pod 'Nuke', '~> 7.0' + +end diff --git a/tmdb-rx-driver/Podfile.lock b/tmdb-rx-driver/Podfile.lock new file mode 100644 index 0000000..6fa7f2f --- /dev/null +++ b/tmdb-rx-driver/Podfile.lock @@ -0,0 +1,65 @@ +PODS: + - Differentiator (4.0.1) + - Nuke (7.6.3) + - R.swift (5.2.2): + - R.swift.Library (~> 5.2.0) + - R.swift.Library (5.2.0) + - RxCocoa (5.1.1): + - RxRelay (~> 5) + - RxSwift (~> 5) + - RxDataSources (4.0.1): + - Differentiator (~> 4.0) + - RxCocoa (~> 5.0) + - RxSwift (~> 5.0) + - RxRelay (5.1.1): + - RxSwift (~> 5) + - RxSwift (5.1.1) + - RxSwiftExt (5.2.0): + - RxSwiftExt/Core (= 5.2.0) + - RxSwiftExt/RxCocoa (= 5.2.0) + - RxSwiftExt/Core (5.2.0): + - RxSwift (~> 5.0) + - RxSwiftExt/RxCocoa (5.2.0): + - RxCocoa (~> 5.0) + - RxSwiftExt/Core + - RxViewController (1.0.0): + - RxCocoa (~> 5.0) + - RxSwift (~> 5.0) + +DEPENDENCIES: + - Nuke (~> 7.0) + - R.swift + - RxCocoa (~> 5) + - RxDataSources + - RxSwift (~> 5) + - RxSwiftExt (~> 5) + - RxViewController + +SPEC REPOS: + trunk: + - Differentiator + - Nuke + - R.swift + - R.swift.Library + - RxCocoa + - RxDataSources + - RxRelay + - RxSwift + - RxSwiftExt + - RxViewController + +SPEC CHECKSUMS: + Differentiator: 886080237d9f87f322641dedbc5be257061b0602 + Nuke: 44130e95e09463f8773ae4b96b90de1eba6b3350 + R.swift: 7c52cdc57a66840ffe6cbd8a823d732059d42a32 + R.swift.Library: 5ba4f1631300caf9a4d890186930da85d540769d + RxCocoa: 32065309a38d29b5b0db858819b5bf9ef038b601 + RxDataSources: efee07fa4de48477eca0a4611e6d11e2da9c1114 + RxRelay: d77f7d771495f43c556cbc43eebd1bb54d01e8e9 + RxSwift: 81470a2074fa8780320ea5fe4102807cb7118178 + RxSwiftExt: 4ca80336f43c28f11a2825cdd2fc61dd6c044697 + RxViewController: 7330a46e5c31cd680db169da4c9fc8676e975a81 + +PODFILE CHECKSUM: 1b323ff7b941979a9274ad85169b0f5f4130f733 + +COCOAPODS: 1.9.3 diff --git a/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.pbxproj b/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.pbxproj new file mode 100644 index 0000000..5d516fa --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.pbxproj @@ -0,0 +1,817 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 51; + objects = { + +/* Begin PBXBuildFile section */ + 1AE0178025175EF50019F8FA /* Movie.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0177C25175EF50019F8FA /* Movie.swift */; }; + 1AE0178125175EF50019F8FA /* Genre.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0177D25175EF50019F8FA /* Genre.swift */; }; + 1AE0178225175EF50019F8FA /* Person.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0177E25175EF50019F8FA /* Person.swift */; }; + 1AE0178325175EF50019F8FA /* Show.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0177F25175EF50019F8FA /* Show.swift */; }; + 1AE0178825175F280019F8FA /* TMDBApi.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0178525175F280019F8FA /* TMDBApi.swift */; }; + 1AE0178925175F280019F8FA /* HTTPClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0178625175F280019F8FA /* HTTPClient.swift */; }; + 1AE0178A25175F280019F8FA /* TMDBApiResponses.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0178725175F280019F8FA /* TMDBApiResponses.swift */; }; + 1AE0179025175F490019F8FA /* UIStoryboard+ViewControllers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0178C25175F490019F8FA /* UIStoryboard+ViewControllers.swift */; }; + 1AE0179125175F490019F8FA /* ActivityIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0178D25175F490019F8FA /* ActivityIndicator.swift */; }; + 1AE0179225175F490019F8FA /* ViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0178E25175F490019F8FA /* ViewModelType.swift */; }; + 1AE017972517607F0019F8FA /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1AE017952517607F0019F8FA /* Main.storyboard */; }; + 1AE017B9251760900019F8FA /* DiscoverNavigator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0179A251760900019F8FA /* DiscoverNavigator.swift */; }; + 1AE017BA251760900019F8FA /* DiscoverViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0179B251760900019F8FA /* DiscoverViewController.swift */; }; + 1AE017BB251760900019F8FA /* DiscoverViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0179C251760900019F8FA /* DiscoverViewModel.swift */; }; + 1AE017BC251760900019F8FA /* CarouselSectionCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1AE0179E251760900019F8FA /* CarouselSectionCell.xib */; }; + 1AE017BD251760900019F8FA /* DiscoverMainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0179F251760900019F8FA /* DiscoverMainView.swift */; }; + 1AE017BE251760900019F8FA /* MovieCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017A0251760900019F8FA /* MovieCell.swift */; }; + 1AE017BF251760900019F8FA /* MovieCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1AE017A1251760900019F8FA /* MovieCell.xib */; }; + 1AE017C0251760900019F8FA /* DiscoverMainView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1AE017A2251760900019F8FA /* DiscoverMainView.xib */; }; + 1AE017C1251760900019F8FA /* CarouselSectionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017A3251760900019F8FA /* CarouselSectionCell.swift */; }; + 1AE017C2251760900019F8FA /* SearchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017A5251760900019F8FA /* SearchViewController.swift */; }; + 1AE017C3251760900019F8FA /* SearchDriver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017A6251760900019F8FA /* SearchDriver.swift */; }; + 1AE017C4251760900019F8FA /* SearchCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017A8251760900019F8FA /* SearchCell.swift */; }; + 1AE017C5251760900019F8FA /* SearchCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1AE017A9251760900019F8FA /* SearchCell.xib */; }; + 1AE017C7251760900019F8FA /* MovieDetailViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017AC251760900019F8FA /* MovieDetailViewModel.swift */; }; + 1AE017C8251760900019F8FA /* MovieDetailNavigator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017AD251760900019F8FA /* MovieDetailNavigator.swift */; }; + 1AE017C9251760900019F8FA /* MovieDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017AE251760900019F8FA /* MovieDetailViewController.swift */; }; + 1AE017CA251760900019F8FA /* GradientImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017B0251760900019F8FA /* GradientImageView.swift */; }; + 1AE017CB251760900019F8FA /* MovieDetailHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1AE017B1251760900019F8FA /* MovieDetailHeaderView.xib */; }; + 1AE017CC251760900019F8FA /* MovieDetailTipsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1AE017B2251760900019F8FA /* MovieDetailTipsView.xib */; }; + 1AE017CD251760900019F8FA /* MovieDetailTipsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017B3251760900019F8FA /* MovieDetailTipsView.swift */; }; + 1AE017CE251760900019F8FA /* MovieDetailHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017B4251760900019F8FA /* MovieDetailHeaderView.swift */; }; + 1AE017CF251760900019F8FA /* LoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017B6251760900019F8FA /* LoginViewModel.swift */; }; + 1AE017D0251760900019F8FA /* LoginNavigator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017B7251760900019F8FA /* LoginNavigator.swift */; }; + 1AE017D1251760900019F8FA /* LoginViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017B8251760900019F8FA /* LoginViewController.swift */; }; + 1AE017D3251761180019F8FA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1AE017D2251761180019F8FA /* Assets.xcassets */; }; + 1AE017D52517612C0019F8FA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1AE017D42517612C0019F8FA /* LaunchScreen.storyboard */; }; + 1AE017D9251761610019F8FA /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017D7251761610019F8FA /* AppDelegate.swift */; }; + 1AE017DA251761610019F8FA /* App.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017D8251761610019F8FA /* App.swift */; }; + 1AE10937251765B6001E5B01 /* SearchResultItemViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE10936251765B6001E5B01 /* SearchResultItemViewModel.swift */; }; + 1AE109432517671A001E5B01 /* Next.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE109392517671A001E5B01 /* Next.swift */; }; + 1AE109442517671A001E5B01 /* Publicsher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE1093A2517671A001E5B01 /* Publicsher.swift */; }; + 1AE109452517671A001E5B01 /* Callable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE1093B2517671A001E5B01 /* Callable.swift */; }; + 1AE109462517671A001E5B01 /* Util.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE1093C2517671A001E5B01 /* Util.swift */; }; + 1AE109472517671A001E5B01 /* Driver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE1093D2517671A001E5B01 /* Driver.swift */; }; + 1AE109482517671A001E5B01 /* Latest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE1093E2517671A001E5B01 /* Latest.swift */; }; + 1AE109492517671A001E5B01 /* NSObject+Disposable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE1093F2517671A001E5B01 /* NSObject+Disposable.swift */; }; + 1AE1094A2517671A001E5B01 /* Loading.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE109402517671A001E5B01 /* Loading.swift */; }; + 1AE1094B2517671A001E5B01 /* Bool.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE109412517671A001E5B01 /* Bool.swift */; }; + 1AE1094C2517671A001E5B01 /* Just.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE109422517671A001E5B01 /* Just.swift */; }; + 1AE1095225176720001E5B01 /* Unown.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE1094E25176720001E5B01 /* Unown.swift */; }; + 1AE1095325176720001E5B01 /* Closure.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE1094F25176720001E5B01 /* Closure.swift */; }; + 1AE1095425176720001E5B01 /* RawClosure.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE1095025176720001E5B01 /* RawClosure.swift */; }; + 1AE1095525176720001E5B01 /* Set.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE1095125176720001E5B01 /* Set.swift */; }; + 1AE1095B25176731001E5B01 /* Logging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE1095725176731001E5B01 /* Logging.swift */; }; + 1AE1095C25176731001E5B01 /* Log.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE1095825176731001E5B01 /* Log.swift */; }; + 1AE1095D25176731001E5B01 /* Params.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE1095925176731001E5B01 /* Params.swift */; }; + 1AE1095E25176731001E5B01 /* Level.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE1095A25176731001E5B01 /* Level.swift */; }; + 1AE1096125176854001E5B01 /* DefaultInitializable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE1096025176854001E5B01 /* DefaultInitializable.swift */; }; + 1AE1096725177FA4001E5B01 /* ViewControllerBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE1096425177FA3001E5B01 /* ViewControllerBinder.swift */; }; + 1AE1096825177FA4001E5B01 /* NavigationBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE1096525177FA3001E5B01 /* NavigationBinder.swift */; }; + 1AE1096C2517800D001E5B01 /* Transitioning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE1096B2517800D001E5B01 /* Transitioning.swift */; }; + 1AE1096E2517809F001E5B01 /* DisposeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE1096D2517809F001E5B01 /* DisposeViewController.swift */; }; + 1AE109A52517A3AC001E5B01 /* R.generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE109A42517A3AC001E5B01 /* R.generated.swift */; }; + 1AE109A72517A461001E5B01 /* SearchViewControllerStateBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE109A62517A461001E5B01 /* SearchViewControllerStateBinder.swift */; }; + 1AE109A92517C026001E5B01 /* SearchViewControllerActionBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE109A82517C026001E5B01 /* SearchViewControllerActionBinder.swift */; }; + CE8D6EC627327C1DFC949704 /* Pods_tmdb_rx_driver.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 973976C40C7DC73287C8EF44 /* Pods_tmdb_rx_driver.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 1AE0176425175DD40019F8FA /* tmdb-rx-driver.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "tmdb-rx-driver.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 1AE0177525175DD50019F8FA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 1AE0177C25175EF50019F8FA /* Movie.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Movie.swift; sourceTree = ""; }; + 1AE0177D25175EF50019F8FA /* Genre.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Genre.swift; sourceTree = ""; }; + 1AE0177E25175EF50019F8FA /* Person.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Person.swift; sourceTree = ""; }; + 1AE0177F25175EF50019F8FA /* Show.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Show.swift; sourceTree = ""; }; + 1AE0178525175F280019F8FA /* TMDBApi.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TMDBApi.swift; sourceTree = ""; }; + 1AE0178625175F280019F8FA /* HTTPClient.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPClient.swift; sourceTree = ""; }; + 1AE0178725175F280019F8FA /* TMDBApiResponses.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TMDBApiResponses.swift; sourceTree = ""; }; + 1AE0178C25175F490019F8FA /* UIStoryboard+ViewControllers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIStoryboard+ViewControllers.swift"; sourceTree = ""; }; + 1AE0178D25175F490019F8FA /* ActivityIndicator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActivityIndicator.swift; sourceTree = ""; }; + 1AE0178E25175F490019F8FA /* ViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewModelType.swift; sourceTree = ""; }; + 1AE017962517607F0019F8FA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 1AE0179A251760900019F8FA /* DiscoverNavigator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DiscoverNavigator.swift; sourceTree = ""; }; + 1AE0179B251760900019F8FA /* DiscoverViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DiscoverViewController.swift; sourceTree = ""; }; + 1AE0179C251760900019F8FA /* DiscoverViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DiscoverViewModel.swift; sourceTree = ""; }; + 1AE0179E251760900019F8FA /* CarouselSectionCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CarouselSectionCell.xib; sourceTree = ""; }; + 1AE0179F251760900019F8FA /* DiscoverMainView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DiscoverMainView.swift; sourceTree = ""; }; + 1AE017A0251760900019F8FA /* MovieCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MovieCell.swift; sourceTree = ""; }; + 1AE017A1251760900019F8FA /* MovieCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MovieCell.xib; sourceTree = ""; }; + 1AE017A2251760900019F8FA /* DiscoverMainView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DiscoverMainView.xib; sourceTree = ""; }; + 1AE017A3251760900019F8FA /* CarouselSectionCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CarouselSectionCell.swift; sourceTree = ""; }; + 1AE017A5251760900019F8FA /* SearchViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchViewController.swift; sourceTree = ""; }; + 1AE017A6251760900019F8FA /* SearchDriver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchDriver.swift; sourceTree = ""; }; + 1AE017A8251760900019F8FA /* SearchCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchCell.swift; sourceTree = ""; }; + 1AE017A9251760900019F8FA /* SearchCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchCell.xib; sourceTree = ""; }; + 1AE017AC251760900019F8FA /* MovieDetailViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MovieDetailViewModel.swift; sourceTree = ""; }; + 1AE017AD251760900019F8FA /* MovieDetailNavigator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MovieDetailNavigator.swift; sourceTree = ""; }; + 1AE017AE251760900019F8FA /* MovieDetailViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MovieDetailViewController.swift; sourceTree = ""; }; + 1AE017B0251760900019F8FA /* GradientImageView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GradientImageView.swift; sourceTree = ""; }; + 1AE017B1251760900019F8FA /* MovieDetailHeaderView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MovieDetailHeaderView.xib; sourceTree = ""; }; + 1AE017B2251760900019F8FA /* MovieDetailTipsView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MovieDetailTipsView.xib; sourceTree = ""; }; + 1AE017B3251760900019F8FA /* MovieDetailTipsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MovieDetailTipsView.swift; sourceTree = ""; }; + 1AE017B4251760900019F8FA /* MovieDetailHeaderView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MovieDetailHeaderView.swift; sourceTree = ""; }; + 1AE017B6251760900019F8FA /* LoginViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoginViewModel.swift; sourceTree = ""; }; + 1AE017B7251760900019F8FA /* LoginNavigator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoginNavigator.swift; sourceTree = ""; }; + 1AE017B8251760900019F8FA /* LoginViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoginViewController.swift; sourceTree = ""; }; + 1AE017D2251761180019F8FA /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 1AE017D42517612C0019F8FA /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; + 1AE017D7251761610019F8FA /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 1AE017D8251761610019F8FA /* App.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = App.swift; sourceTree = ""; }; + 1AE10936251765B6001E5B01 /* SearchResultItemViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultItemViewModel.swift; sourceTree = ""; }; + 1AE109392517671A001E5B01 /* Next.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Next.swift; sourceTree = ""; }; + 1AE1093A2517671A001E5B01 /* Publicsher.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Publicsher.swift; sourceTree = ""; }; + 1AE1093B2517671A001E5B01 /* Callable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Callable.swift; sourceTree = ""; }; + 1AE1093C2517671A001E5B01 /* Util.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Util.swift; sourceTree = ""; }; + 1AE1093D2517671A001E5B01 /* Driver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Driver.swift; sourceTree = ""; }; + 1AE1093E2517671A001E5B01 /* Latest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Latest.swift; sourceTree = ""; }; + 1AE1093F2517671A001E5B01 /* NSObject+Disposable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSObject+Disposable.swift"; sourceTree = ""; }; + 1AE109402517671A001E5B01 /* Loading.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Loading.swift; sourceTree = ""; }; + 1AE109412517671A001E5B01 /* Bool.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Bool.swift; sourceTree = ""; }; + 1AE109422517671A001E5B01 /* Just.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Just.swift; sourceTree = ""; }; + 1AE1094E25176720001E5B01 /* Unown.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Unown.swift; sourceTree = ""; }; + 1AE1094F25176720001E5B01 /* Closure.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Closure.swift; sourceTree = ""; }; + 1AE1095025176720001E5B01 /* RawClosure.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RawClosure.swift; sourceTree = ""; }; + 1AE1095125176720001E5B01 /* Set.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Set.swift; sourceTree = ""; }; + 1AE1095725176731001E5B01 /* Logging.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Logging.swift; sourceTree = ""; }; + 1AE1095825176731001E5B01 /* Log.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Log.swift; sourceTree = ""; }; + 1AE1095925176731001E5B01 /* Params.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Params.swift; sourceTree = ""; }; + 1AE1095A25176731001E5B01 /* Level.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Level.swift; sourceTree = ""; }; + 1AE1096025176854001E5B01 /* DefaultInitializable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DefaultInitializable.swift; sourceTree = ""; }; + 1AE1096425177FA3001E5B01 /* ViewControllerBinder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewControllerBinder.swift; sourceTree = ""; }; + 1AE1096525177FA3001E5B01 /* NavigationBinder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NavigationBinder.swift; sourceTree = ""; }; + 1AE1096B2517800D001E5B01 /* Transitioning.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Transitioning.swift; sourceTree = ""; }; + 1AE1096D2517809F001E5B01 /* DisposeViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DisposeViewController.swift; sourceTree = ""; }; + 1AE109A42517A3AC001E5B01 /* R.generated.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = R.generated.swift; sourceTree = ""; }; + 1AE109A62517A461001E5B01 /* SearchViewControllerStateBinder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchViewControllerStateBinder.swift; sourceTree = ""; }; + 1AE109A82517C026001E5B01 /* SearchViewControllerActionBinder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchViewControllerActionBinder.swift; sourceTree = ""; }; + 41160404C5F5FF90CD712B13 /* Pods-tmdb-rx-driver.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-tmdb-rx-driver.release.xcconfig"; path = "Target Support Files/Pods-tmdb-rx-driver/Pods-tmdb-rx-driver.release.xcconfig"; sourceTree = ""; }; + 973976C40C7DC73287C8EF44 /* Pods_tmdb_rx_driver.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_tmdb_rx_driver.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + AF7C2B4A13E312E1FD20CF55 /* Pods-tmdb-rx-driver.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-tmdb-rx-driver.debug.xcconfig"; path = "Target Support Files/Pods-tmdb-rx-driver/Pods-tmdb-rx-driver.debug.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 1AE0176125175DD40019F8FA /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + CE8D6EC627327C1DFC949704 /* Pods_tmdb_rx_driver.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1AE0175B25175DD40019F8FA = { + isa = PBXGroup; + children = ( + 1AE0176625175DD40019F8FA /* tmdb-rx-driver */, + 1AE0176525175DD40019F8FA /* Products */, + B13475FE0AB43ADE61034608 /* Pods */, + E22C1B6881174EBB0CB30744 /* Frameworks */, + ); + sourceTree = ""; + }; + 1AE0176525175DD40019F8FA /* Products */ = { + isa = PBXGroup; + children = ( + 1AE0176425175DD40019F8FA /* tmdb-rx-driver.app */, + ); + name = Products; + sourceTree = ""; + }; + 1AE0176625175DD40019F8FA /* tmdb-rx-driver */ = { + isa = PBXGroup; + children = ( + 1AE017D6251761610019F8FA /* Application */, + 1AE01798251760900019F8FA /* Scenes */, + 1AE017942517607F0019F8FA /* Storyboard */, + 1AE0178425175F280019F8FA /* Networking */, + 1AE0177B25175EF50019F8FA /* Models */, + 1AE109A32517A3AC001E5B01 /* Resource */, + 1AE0178B25175F490019F8FA /* Utils */, + 1AE017D2251761180019F8FA /* Assets.xcassets */, + 1AE0177525175DD50019F8FA /* Info.plist */, + ); + path = "tmdb-rx-driver"; + sourceTree = ""; + }; + 1AE0177B25175EF50019F8FA /* Models */ = { + isa = PBXGroup; + children = ( + 1AE0177C25175EF50019F8FA /* Movie.swift */, + 1AE0177D25175EF50019F8FA /* Genre.swift */, + 1AE0177E25175EF50019F8FA /* Person.swift */, + 1AE0177F25175EF50019F8FA /* Show.swift */, + ); + path = Models; + sourceTree = ""; + }; + 1AE0178425175F280019F8FA /* Networking */ = { + isa = PBXGroup; + children = ( + 1AE0178525175F280019F8FA /* TMDBApi.swift */, + 1AE0178625175F280019F8FA /* HTTPClient.swift */, + 1AE0178725175F280019F8FA /* TMDBApiResponses.swift */, + ); + path = Networking; + sourceTree = ""; + }; + 1AE0178B25175F490019F8FA /* Utils */ = { + isa = PBXGroup; + children = ( + 1AE1096225177FA3001E5B01 /* Binder */, + 1AE1095F25176854001E5B01 /* DefaultInitializable */, + 1AE1095625176731001E5B01 /* Log */, + 1AE1094D25176720001E5B01 /* Closure */, + 1AE109382517671A001E5B01 /* RxUtils */, + 1AE0178C25175F490019F8FA /* UIStoryboard+ViewControllers.swift */, + 1AE0178D25175F490019F8FA /* ActivityIndicator.swift */, + 1AE0178E25175F490019F8FA /* ViewModelType.swift */, + ); + path = Utils; + sourceTree = ""; + }; + 1AE017942517607F0019F8FA /* Storyboard */ = { + isa = PBXGroup; + children = ( + 1AE017952517607F0019F8FA /* Main.storyboard */, + ); + path = Storyboard; + sourceTree = ""; + }; + 1AE01798251760900019F8FA /* Scenes */ = { + isa = PBXGroup; + children = ( + 1AE01799251760900019F8FA /* Discover */, + 1AE017A4251760900019F8FA /* Search */, + 1AE017AB251760900019F8FA /* MovieDetail */, + 1AE017B5251760900019F8FA /* Login */, + ); + path = Scenes; + sourceTree = ""; + }; + 1AE01799251760900019F8FA /* Discover */ = { + isa = PBXGroup; + children = ( + 1AE0179A251760900019F8FA /* DiscoverNavigator.swift */, + 1AE0179B251760900019F8FA /* DiscoverViewController.swift */, + 1AE0179C251760900019F8FA /* DiscoverViewModel.swift */, + 1AE0179D251760900019F8FA /* Views */, + ); + path = Discover; + sourceTree = ""; + }; + 1AE0179D251760900019F8FA /* Views */ = { + isa = PBXGroup; + children = ( + 1AE0179E251760900019F8FA /* CarouselSectionCell.xib */, + 1AE0179F251760900019F8FA /* DiscoverMainView.swift */, + 1AE017A0251760900019F8FA /* MovieCell.swift */, + 1AE017A1251760900019F8FA /* MovieCell.xib */, + 1AE017A2251760900019F8FA /* DiscoverMainView.xib */, + 1AE017A3251760900019F8FA /* CarouselSectionCell.swift */, + ); + path = Views; + sourceTree = ""; + }; + 1AE017A4251760900019F8FA /* Search */ = { + isa = PBXGroup; + children = ( + 1AE017A5251760900019F8FA /* SearchViewController.swift */, + 1AE109A62517A461001E5B01 /* SearchViewControllerStateBinder.swift */, + 1AE109A82517C026001E5B01 /* SearchViewControllerActionBinder.swift */, + 1AE017A6251760900019F8FA /* SearchDriver.swift */, + 1AE10936251765B6001E5B01 /* SearchResultItemViewModel.swift */, + 1AE017A7251760900019F8FA /* Views */, + ); + path = Search; + sourceTree = ""; + }; + 1AE017A7251760900019F8FA /* Views */ = { + isa = PBXGroup; + children = ( + 1AE017A8251760900019F8FA /* SearchCell.swift */, + 1AE017A9251760900019F8FA /* SearchCell.xib */, + ); + path = Views; + sourceTree = ""; + }; + 1AE017AB251760900019F8FA /* MovieDetail */ = { + isa = PBXGroup; + children = ( + 1AE017AC251760900019F8FA /* MovieDetailViewModel.swift */, + 1AE017AD251760900019F8FA /* MovieDetailNavigator.swift */, + 1AE017AE251760900019F8FA /* MovieDetailViewController.swift */, + 1AE017AF251760900019F8FA /* Views */, + ); + path = MovieDetail; + sourceTree = ""; + }; + 1AE017AF251760900019F8FA /* Views */ = { + isa = PBXGroup; + children = ( + 1AE017B0251760900019F8FA /* GradientImageView.swift */, + 1AE017B1251760900019F8FA /* MovieDetailHeaderView.xib */, + 1AE017B2251760900019F8FA /* MovieDetailTipsView.xib */, + 1AE017B3251760900019F8FA /* MovieDetailTipsView.swift */, + 1AE017B4251760900019F8FA /* MovieDetailHeaderView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 1AE017B5251760900019F8FA /* Login */ = { + isa = PBXGroup; + children = ( + 1AE017B6251760900019F8FA /* LoginViewModel.swift */, + 1AE017B7251760900019F8FA /* LoginNavigator.swift */, + 1AE017B8251760900019F8FA /* LoginViewController.swift */, + ); + path = Login; + sourceTree = ""; + }; + 1AE017D6251761610019F8FA /* Application */ = { + isa = PBXGroup; + children = ( + 1AE017D42517612C0019F8FA /* LaunchScreen.storyboard */, + 1AE017D7251761610019F8FA /* AppDelegate.swift */, + 1AE017D8251761610019F8FA /* App.swift */, + ); + path = Application; + sourceTree = ""; + }; + 1AE109382517671A001E5B01 /* RxUtils */ = { + isa = PBXGroup; + children = ( + 1AE109392517671A001E5B01 /* Next.swift */, + 1AE1093A2517671A001E5B01 /* Publicsher.swift */, + 1AE1093B2517671A001E5B01 /* Callable.swift */, + 1AE1093C2517671A001E5B01 /* Util.swift */, + 1AE1093D2517671A001E5B01 /* Driver.swift */, + 1AE1093E2517671A001E5B01 /* Latest.swift */, + 1AE1093F2517671A001E5B01 /* NSObject+Disposable.swift */, + 1AE109402517671A001E5B01 /* Loading.swift */, + 1AE109412517671A001E5B01 /* Bool.swift */, + 1AE109422517671A001E5B01 /* Just.swift */, + ); + path = RxUtils; + sourceTree = ""; + }; + 1AE1094D25176720001E5B01 /* Closure */ = { + isa = PBXGroup; + children = ( + 1AE1094E25176720001E5B01 /* Unown.swift */, + 1AE1094F25176720001E5B01 /* Closure.swift */, + 1AE1095025176720001E5B01 /* RawClosure.swift */, + 1AE1095125176720001E5B01 /* Set.swift */, + ); + path = Closure; + sourceTree = ""; + }; + 1AE1095625176731001E5B01 /* Log */ = { + isa = PBXGroup; + children = ( + 1AE1095725176731001E5B01 /* Logging.swift */, + 1AE1095825176731001E5B01 /* Log.swift */, + 1AE1095925176731001E5B01 /* Params.swift */, + 1AE1095A25176731001E5B01 /* Level.swift */, + ); + path = Log; + sourceTree = ""; + }; + 1AE1095F25176854001E5B01 /* DefaultInitializable */ = { + isa = PBXGroup; + children = ( + 1AE1096025176854001E5B01 /* DefaultInitializable.swift */, + ); + path = DefaultInitializable; + sourceTree = ""; + }; + 1AE1096225177FA3001E5B01 /* Binder */ = { + isa = PBXGroup; + children = ( + 1AE1096D2517809F001E5B01 /* DisposeViewController.swift */, + 1AE1096B2517800D001E5B01 /* Transitioning.swift */, + 1AE1096425177FA3001E5B01 /* ViewControllerBinder.swift */, + 1AE1096525177FA3001E5B01 /* NavigationBinder.swift */, + ); + path = Binder; + sourceTree = ""; + }; + 1AE109A32517A3AC001E5B01 /* Resource */ = { + isa = PBXGroup; + children = ( + 1AE109A42517A3AC001E5B01 /* R.generated.swift */, + ); + name = Resource; + path = "tmdb-rx-driver/Resource"; + sourceTree = SOURCE_ROOT; + }; + B13475FE0AB43ADE61034608 /* Pods */ = { + isa = PBXGroup; + children = ( + AF7C2B4A13E312E1FD20CF55 /* Pods-tmdb-rx-driver.debug.xcconfig */, + 41160404C5F5FF90CD712B13 /* Pods-tmdb-rx-driver.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + E22C1B6881174EBB0CB30744 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 973976C40C7DC73287C8EF44 /* Pods_tmdb_rx_driver.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 1AE0176325175DD40019F8FA /* tmdb-rx-driver */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1AE0177825175DD50019F8FA /* Build configuration list for PBXNativeTarget "tmdb-rx-driver" */; + buildPhases = ( + EDC835FD4A08A05D3C174CC7 /* [CP] Check Pods Manifest.lock */, + 1AE1096F2517A274001E5B01 /* ShellScript */, + 1AE0176025175DD40019F8FA /* Sources */, + 1AE0176125175DD40019F8FA /* Frameworks */, + 1AE0176225175DD40019F8FA /* Resources */, + 340925E38404B49368B8B0B7 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "tmdb-rx-driver"; + productName = "tmdb-rx-driver"; + productReference = 1AE0176425175DD40019F8FA /* tmdb-rx-driver.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 1AE0175C25175DD40019F8FA /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1170; + LastUpgradeCheck = 1170; + TargetAttributes = { + 1AE0176325175DD40019F8FA = { + CreatedOnToolsVersion = 11.7; + }; + }; + }; + buildConfigurationList = 1AE0175F25175DD40019F8FA /* Build configuration list for PBXProject "tmdb-rx-driver" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 1AE0175B25175DD40019F8FA; + productRefGroup = 1AE0176525175DD40019F8FA /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 1AE0176325175DD40019F8FA /* tmdb-rx-driver */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 1AE0176225175DD40019F8FA /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1AE017D52517612C0019F8FA /* LaunchScreen.storyboard in Resources */, + 1AE017C0251760900019F8FA /* DiscoverMainView.xib in Resources */, + 1AE017CB251760900019F8FA /* MovieDetailHeaderView.xib in Resources */, + 1AE017CC251760900019F8FA /* MovieDetailTipsView.xib in Resources */, + 1AE017972517607F0019F8FA /* Main.storyboard in Resources */, + 1AE017C5251760900019F8FA /* SearchCell.xib in Resources */, + 1AE017BC251760900019F8FA /* CarouselSectionCell.xib in Resources */, + 1AE017D3251761180019F8FA /* Assets.xcassets in Resources */, + 1AE017BF251760900019F8FA /* MovieCell.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 1AE1096F2517A274001E5B01 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "$TEMP_DIR/rswift-lastrun", + ); + outputFileListPaths = ( + ); + outputPaths = ( + "${SRCROOT}/${TARGET_NAME}/Resource/R.generated.swift", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "$PODS_ROOT/R.swift/rswift generate ${SRCROOT}/${TARGET_NAME}/Resource/R.generated.swift\n"; + }; + 340925E38404B49368B8B0B7 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-tmdb-rx-driver/Pods-tmdb-rx-driver-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-tmdb-rx-driver/Pods-tmdb-rx-driver-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-tmdb-rx-driver/Pods-tmdb-rx-driver-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + EDC835FD4A08A05D3C174CC7 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-tmdb-rx-driver-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 1AE0176025175DD40019F8FA /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1AE1095E25176731001E5B01 /* Level.swift in Sources */, + 1AE017C3251760900019F8FA /* SearchDriver.swift in Sources */, + 1AE1095525176720001E5B01 /* Set.swift in Sources */, + 1AE0178225175EF50019F8FA /* Person.swift in Sources */, + 1AE1095D25176731001E5B01 /* Params.swift in Sources */, + 1AE0178825175F280019F8FA /* TMDBApi.swift in Sources */, + 1AE0179025175F490019F8FA /* UIStoryboard+ViewControllers.swift in Sources */, + 1AE0179125175F490019F8FA /* ActivityIndicator.swift in Sources */, + 1AE017BA251760900019F8FA /* DiscoverViewController.swift in Sources */, + 1AE1094A2517671A001E5B01 /* Loading.swift in Sources */, + 1AE017B9251760900019F8FA /* DiscoverNavigator.swift in Sources */, + 1AE109472517671A001E5B01 /* Driver.swift in Sources */, + 1AE017D9251761610019F8FA /* AppDelegate.swift in Sources */, + 1AE0178025175EF50019F8FA /* Movie.swift in Sources */, + 1AE109A72517A461001E5B01 /* SearchViewControllerStateBinder.swift in Sources */, + 1AE017CD251760900019F8FA /* MovieDetailTipsView.swift in Sources */, + 1AE1096725177FA4001E5B01 /* ViewControllerBinder.swift in Sources */, + 1AE1095225176720001E5B01 /* Unown.swift in Sources */, + 1AE017BD251760900019F8FA /* DiscoverMainView.swift in Sources */, + 1AE10937251765B6001E5B01 /* SearchResultItemViewModel.swift in Sources */, + 1AE1096E2517809F001E5B01 /* DisposeViewController.swift in Sources */, + 1AE017C1251760900019F8FA /* CarouselSectionCell.swift in Sources */, + 1AE109432517671A001E5B01 /* Next.swift in Sources */, + 1AE1095425176720001E5B01 /* RawClosure.swift in Sources */, + 1AE0178925175F280019F8FA /* HTTPClient.swift in Sources */, + 1AE1094C2517671A001E5B01 /* Just.swift in Sources */, + 1AE1096C2517800D001E5B01 /* Transitioning.swift in Sources */, + 1AE0178A25175F280019F8FA /* TMDBApiResponses.swift in Sources */, + 1AE109462517671A001E5B01 /* Util.swift in Sources */, + 1AE0178325175EF50019F8FA /* Show.swift in Sources */, + 1AE017CF251760900019F8FA /* LoginViewModel.swift in Sources */, + 1AE109492517671A001E5B01 /* NSObject+Disposable.swift in Sources */, + 1AE017C2251760900019F8FA /* SearchViewController.swift in Sources */, + 1AE017D0251760900019F8FA /* LoginNavigator.swift in Sources */, + 1AE1095C25176731001E5B01 /* Log.swift in Sources */, + 1AE109482517671A001E5B01 /* Latest.swift in Sources */, + 1AE1095B25176731001E5B01 /* Logging.swift in Sources */, + 1AE1096125176854001E5B01 /* DefaultInitializable.swift in Sources */, + 1AE017D1251760900019F8FA /* LoginViewController.swift in Sources */, + 1AE017CA251760900019F8FA /* GradientImageView.swift in Sources */, + 1AE109A92517C026001E5B01 /* SearchViewControllerActionBinder.swift in Sources */, + 1AE017BE251760900019F8FA /* MovieCell.swift in Sources */, + 1AE1095325176720001E5B01 /* Closure.swift in Sources */, + 1AE017DA251761610019F8FA /* App.swift in Sources */, + 1AE109A52517A3AC001E5B01 /* R.generated.swift in Sources */, + 1AE0178125175EF50019F8FA /* Genre.swift in Sources */, + 1AE017CE251760900019F8FA /* MovieDetailHeaderView.swift in Sources */, + 1AE017C8251760900019F8FA /* MovieDetailNavigator.swift in Sources */, + 1AE109452517671A001E5B01 /* Callable.swift in Sources */, + 1AE017C7251760900019F8FA /* MovieDetailViewModel.swift in Sources */, + 1AE0179225175F490019F8FA /* ViewModelType.swift in Sources */, + 1AE017BB251760900019F8FA /* DiscoverViewModel.swift in Sources */, + 1AE017C9251760900019F8FA /* MovieDetailViewController.swift in Sources */, + 1AE1096825177FA4001E5B01 /* NavigationBinder.swift in Sources */, + 1AE017C4251760900019F8FA /* SearchCell.swift in Sources */, + 1AE109442517671A001E5B01 /* Publicsher.swift in Sources */, + 1AE1094B2517671A001E5B01 /* Bool.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 1AE017952517607F0019F8FA /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 1AE017962517607F0019F8FA /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 1AE0177625175DD50019F8FA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.7; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 1AE0177725175DD50019F8FA /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.7; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 1AE0177925175DD50019F8FA /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = AF7C2B4A13E312E1FD20CF55 /* Pods-tmdb-rx-driver.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = "tmdb-rx-driver/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.tmdb-rx-driver.tmdb-rx-driver"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 1AE0177A25175DD50019F8FA /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 41160404C5F5FF90CD712B13 /* Pods-tmdb-rx-driver.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = "tmdb-rx-driver/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "com.tmdb-rx-driver.tmdb-rx-driver"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1AE0175F25175DD40019F8FA /* Build configuration list for PBXProject "tmdb-rx-driver" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1AE0177625175DD50019F8FA /* Debug */, + 1AE0177725175DD50019F8FA /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1AE0177825175DD50019F8FA /* Build configuration list for PBXNativeTarget "tmdb-rx-driver" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1AE0177925175DD50019F8FA /* Debug */, + 1AE0177A25175DD50019F8FA /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 1AE0175C25175DD40019F8FA /* Project object */; +} diff --git a/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..b6afe7c --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/tmdb-rx-driver/tmdb-rx-driver.xcworkspace/contents.xcworkspacedata b/tmdb-rx-driver/tmdb-rx-driver.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..c170bec --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/tmdb-rx-driver/tmdb-rx-driver.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/tmdb-rx-driver/tmdb-rx-driver.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/tmdb-rx-driver/tmdb-rx-driver/Application/App.swift b/tmdb-rx-driver/tmdb-rx-driver/Application/App.swift new file mode 100644 index 0000000..ea12622 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Application/App.swift @@ -0,0 +1,54 @@ +// +// App.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 30/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import UIKit + +final class App { + static let shared = App() + + func startInterface(in window: UIWindow) { + let discoverNavigationController = UINavigationController() + let discoverNavigator = DiscoverNavigator(navigationController: discoverNavigationController) + let discoverViewModel = DiscoverViewModel(dependencies: DiscoverViewModel.Dependencies(api: TMDBApi(), navigator: discoverNavigator)) + let discoverViewController = UIStoryboard.main.discoverViewController + discoverViewController.viewModel = discoverViewModel + + let searchNavigationController = UINavigationController() +// let searchNavigator = SearchNavigator(navigationController: searchNavigationController) + let searchViewController = SearchViewController.Factory.default + + let tabBarController = UITabBarController() + tabBarController.tabBar.barTintColor = UIColor(red: 18/255, green: 18/255, blue: 18/255, alpha: 1.0) + tabBarController.tabBar.tintColor = .white + + discoverNavigationController.tabBarItem = UITabBarItem(title: "Discover", image: nil, selectedImage: nil) + discoverNavigationController.viewControllers = [discoverViewController] + + searchNavigationController.viewControllers = [searchViewController] + searchNavigationController.tabBarItem = UITabBarItem(title: "Search", image: nil, selectedImage: nil) + + tabBarController.viewControllers = [ + discoverNavigationController, + searchNavigationController + ] + + let loginNavigationController = UINavigationController() + let loginNavigator = LoginNavigator(navigationController: loginNavigationController) + let loginViewModel = LoginViewModel(dependencies: LoginViewModel.Dependencies(api: TMDBApi(), navigator: loginNavigator)) + let loginViewController = UIStoryboard.main.loginViewController + loginViewController.viewModel = loginViewModel + loginNavigationController.viewControllers = [loginViewController] + + window.rootViewController = tabBarController + window.makeKeyAndVisible() + + // Not the nicest solution, if someone has any idea how to manage login/main screens, please let me know! + tabBarController.present(loginNavigationController, animated: true, completion: nil) + + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Application/AppDelegate.swift b/tmdb-rx-driver/tmdb-rx-driver/Application/AppDelegate.swift new file mode 100644 index 0000000..72f3846 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Application/AppDelegate.swift @@ -0,0 +1,25 @@ +// +// AppDelegate.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 27/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + window = UIWindow(frame: UIScreen.main.bounds) + + if let window = window { + App.shared.startInterface(in: window) + } + + return true + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Application/LaunchScreen.storyboard b/tmdb-rx-driver/tmdb-rx-driver/Application/LaunchScreen.storyboard new file mode 100644 index 0000000..bfa3612 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Application/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/AppIcon.appiconset/Contents.json b/tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..d8db8d6 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" + }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/Contents.json b/tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/aquaman.imageset/Contents.json b/tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/aquaman.imageset/Contents.json new file mode 100644 index 0000000..223d5ac --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/aquaman.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "aquaman.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/aquaman.imageset/aquaman.jpg b/tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/aquaman.imageset/aquaman.jpg new file mode 100644 index 0000000000000000000000000000000000000000..12651dd50b771fd64d1adaf83f75b0e2aaef5598 GIT binary patch literal 242599 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

D-aA>e~laBU3CN@K8&;d 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 v(k;3$PQQcqBQU0z&quU&G+dyFjgA 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 z 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%0DaZ_tVe0XzuJ5X)OF7|h8r(6+) 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 literal 0 HcmV?d00001 diff --git a/tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/search_icon.imageset/Contents.json b/tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/search_icon.imageset/Contents.json new file mode 100644 index 0000000..9d1ff52 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/search_icon.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "icons8-search-100.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/search_icon.imageset/icons8-search-100.png b/tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/search_icon.imageset/icons8-search-100.png new file mode 100644 index 0000000000000000000000000000000000000000..d4f1f2014f860019b2bf6bd5c30a2c15bcfaabca GIT binary patch literal 2863 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 N002ovPDHLkV1l=KV>bW* literal 0 HcmV?d00001 diff --git a/tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/star_icon.imageset/Contents.json b/tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/star_icon.imageset/Contents.json new file mode 100644 index 0000000..fefb68a --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/star_icon.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "icons8-star-filled-96.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/star_icon.imageset/icons8-star-filled-96.png b/tmdb-rx-driver/tmdb-rx-driver/Assets.xcassets/star_icon.imageset/icons8-star-filled-96.png new file mode 100644 index 0000000000000000000000000000000000000000..42c4379c54e7493111c53c3997b56713df931aa3 GIT binary patch literal 1661 zcmV-@27>vCP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1`EexX4aHP@^&CmgoF)J2Uj$ndwJ$PyN;Rg9H7jy8k_=tE#(as{XDy zj^j9v<2a7v#6;dq7bv~!Od843Pbt0YOcH6%-HY%g2)FfNXHrO(9L-y4PVu%r>`Ve_ zCwsW%ue|`+3-Fje?Tj0QzSs?aofh?JXPijZ*o`gzeD4du$M~Es=8Ov*??37dzbihc zi#g*U@6=Ok>+dQ&hh=ner)Z>=erN^1UR*{OcZvjCcOBvWXNA6AT!zc)YEDr|D|ycf z+!B}7)tn-b_UzpV^_&&9B`(W#baiJ`a7cN_3VJJX9bMfS1!>mr8f5G5D(nSVSIaoV zf*{|t0`5m#SIaoVAj^$A@a5{P6>dM`x~!q)oI$}y%Ga%62N7#%IcE^0IlF6=t-q_V z7oe7wb@~Ot9kv1;My#b}oqmv|xm$7Q_}dC|7_k;>YI$cn5ZJ3$kfVq-wY;+x(oSzi zSZAydM-gkXwhrTL29DRSSOFFx*4AMh3psJmO$g~PE4(7a+8jfNb9#|1ebEZ8NO24u zZo0|y+C|dZeVb&Bhoqf6g$Nmp_0q6#va^z_qEES;&qVB1?_6fAkcP(^hd;{|Xrnd#a2q&(C7_`o${j z+Fs0#8ETxvk)KHJ#BuItYXH~g3Yj50jd3*c&iw6oHGi}Qa&1(|3Ylqq#SlKvXX*FW zfUY$$qp^K|(7)BJSOdGlmcKIgzct|<{dx>^(rRFu6*56K8q;{mkMFq_gLZnGm|}I9 ziN-S-^3KdP__DENG&5BS86XRdWwOZE$<=7!E32_-5WO=4jbmrXI}2B#kz-baRaWo} z?;69-B1^lj#21e*tVXLSdZlNzUk>Dl*(ZNk_A@5Ji;yLUEQ4iM=($R#tK_ZZfMv9tN)Bk-)j>|q-e8+8pV+Im zT^*#EJZPCMqu8sqT^*#IK5dyTqu8sqT^%G#->}ShWYWSPaDwf*>!R{E}Gvdm)7+J5}N zP>iRrbhQ1r$@AL9GJ$KqidN_uy{nCQ;py3y!5B31spVxr+Vw{)b1{g$tBrWUuKb*3 zE(Wo8wGl5cF_wSO<5S8Rd{jKRs^aICpxC?Gh!@GyQp1V)W4Gh<14Xbv)q6aM(A9!1$c+rRB0dHO}qw(l}OotxmMejO}<2a7vIF93tNUioi=LRetZnZFO00000NkvXX Hu0mjfuO}=B literal 0 HcmV?d00001 diff --git a/tmdb-rx-driver/tmdb-rx-driver/Info.plist b/tmdb-rx-driver/tmdb-rx-driver/Info.plist new file mode 100644 index 0000000..25eeb5c --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Info.plist @@ -0,0 +1,50 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + + diff --git a/tmdb-rx-driver/tmdb-rx-driver/Models/Genre.swift b/tmdb-rx-driver/tmdb-rx-driver/Models/Genre.swift new file mode 100644 index 0000000..65ec7d8 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Models/Genre.swift @@ -0,0 +1,14 @@ +// +// Genre.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 30/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import Foundation + +struct Genre: Decodable { + let id: Int + let name: String +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Models/Movie.swift b/tmdb-rx-driver/tmdb-rx-driver/Models/Movie.swift new file mode 100644 index 0000000..76f5e0a --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Models/Movie.swift @@ -0,0 +1,35 @@ +// +// Movie.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 30/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import Foundation + +struct Movie: Decodable { + let id: Int + let title: String + let overview: String + let genres: [Genre]? + let posterUrl: String? + let releaseDate: String + let runtime: Int? + let voteAverage: Double? + let voteCount: Int? + let status: String? + + enum CodingKeys: String, CodingKey { + case id + case title + case overview + case genres + case posterUrl = "poster_path" + case releaseDate = "release_date" + case runtime + case voteAverage = "vote_average" + case voteCount = "vote_count" + case status + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Models/Person.swift b/tmdb-rx-driver/tmdb-rx-driver/Models/Person.swift new file mode 100644 index 0000000..14d4971 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Models/Person.swift @@ -0,0 +1,46 @@ +// +// Person.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 30/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import Foundation + +struct KnownFor: Decodable { + let title: String? +} + +struct Person: Decodable { + let id: Int + let name: String + let profileUrl: String? + let knownForTitles: [String]? + + enum CodingKeys: String, CodingKey { + case id, name, profileUrl = "profile_path", knownFor = "known_for" + } + + enum KnownForKeys: String, CodingKey { + case knownForTitle = "title" + } + + init(from decoder: Decoder) throws { + let container = try decoder.container(keyedBy: CodingKeys.self) + id = try container.decode(Int.self, forKey: .id) + name = try container.decode(String.self, forKey: .name) + profileUrl = try? container.decode(String.self, forKey: .profileUrl) + var known = try container.nestedUnkeyedContainer(forKey: .knownFor) + var titles: [String]? = [] + while !known.isAtEnd { + if let knownForDecodable = try? known.decode(KnownFor.self), + let title = knownForDecodable.title { + titles?.append(title) + } else { + titles = nil + } + } + knownForTitles = titles + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Models/Show.swift b/tmdb-rx-driver/tmdb-rx-driver/Models/Show.swift new file mode 100644 index 0000000..97d517c --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Models/Show.swift @@ -0,0 +1,20 @@ +// +// Show.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 30/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import Foundation + +struct Show: Decodable { + let id: Int + let name: String + let posterUrl: String + let releaseDate: String + + enum CodingKeys: String, CodingKey { + case id, name, posterUrl = "poster_path", releaseDate = "first_air_date" + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Networking/HTTPClient.swift b/tmdb-rx-driver/tmdb-rx-driver/Networking/HTTPClient.swift new file mode 100644 index 0000000..4120057 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Networking/HTTPClient.swift @@ -0,0 +1,38 @@ +// +// HTTPClient.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 30/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import RxSwift +import RxCocoa + +protocol HTTPClientProvider { + func get(url: String) -> Observable + func post(url: String, params: [String: Any]) -> Observable +} + +final class HTTPClient: HTTPClientProvider { + func get(url: String) -> Observable { + guard let url = URL(string: url) else { return Observable.empty() } + let request = URLRequest(url: url) + return URLSession.shared.rx.data(request: request) + .map { Optional.init($0) } + .catchErrorJustReturn(nil) + } + + func post(url: String, params: [String: Any]) -> Observable { + guard let url = URL(string: url) else { return Observable.empty() } + var request = URLRequest(url: url) + request.httpMethod = "POST" + request.setValue("application/json", forHTTPHeaderField: "Accept") + request.setValue("application/json", forHTTPHeaderField: "Content-Type") + let jsonData = try? JSONSerialization.data(withJSONObject: params, options: .prettyPrinted) + request.httpBody = jsonData + return URLSession.shared.rx.data(request: request) + .map { Optional.init($0) } + .catchErrorJustReturn(nil) + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Networking/TMDBApi.swift b/tmdb-rx-driver/tmdb-rx-driver/Networking/TMDBApi.swift new file mode 100644 index 0000000..c250553 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Networking/TMDBApi.swift @@ -0,0 +1,145 @@ +// +// TMDBApi.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 27/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import RxSwift +import RxCocoa + +protocol TMDBApiMoviesProvider { + func fetchPopularMovies() -> Observable<[Movie]?> + func fetchMovieDetails(forMovieId id: Int) -> Observable + func searchMovies(forQuery query: String) -> Observable<[Movie]?> +} + +protocol TMDBApiPeopleProvider { + func fetchPopularPeople() -> Observable<[Person]?> + func searchPeople(forQuery query: String) -> Observable<[Person]?> +} + +protocol TMDBApiShowsProvider { + func fetchPopularShows() -> Observable<[Show]?> +} + +protocol TMDBApiAuthProvider { + func login(withUsername username: String, password: String) -> Observable +} + +protocol TMDBApiProvider: TMDBApiMoviesProvider, TMDBApiPeopleProvider, TMDBApiShowsProvider, TMDBApiAuthProvider { } + +final class TMDBApi: TMDBApiProvider { + private struct Constants { + static let apiKey = "3f093e78fd47d26523d784196a33f00a" + } + + private let httpClient: HTTPClientProvider + + init(httpClient: HTTPClientProvider = HTTPClient()) { + self.httpClient = httpClient + } + + func fetchPopularMovies() -> Observable<[Movie]?> { + return httpClient.get(url: "https://api.themoviedb.org/3/discover/movie?api_key=\(Constants.apiKey)&language=en-US&sort_by=popularity.desc&include_adult=false&include_video=false") + .map { data -> [Movie]? in + guard let data = data, + let response = try? JSONDecoder().decode(MoviesResponse.self, from: data) else { + return nil + } + return response.results + } + } + + func fetchPopularPeople() -> Observable<[Person]?> { + return httpClient.get(url: "https://api.themoviedb.org/3/person/popular?api_key=\(Constants.apiKey)&language=en-US&page=1") + .map { data -> [Person]? in + guard let data = data, + let response = try? JSONDecoder().decode(PeopleResponse.self, from: data) else { + return nil + } + return response.results + } + } + + func fetchPopularShows() -> Observable<[Show]?> { + return httpClient.get(url: "https://api.themoviedb.org/3/discover/tv?api_key=\(Constants.apiKey)&language=en-US&sort_by=popularity.desc&page=1&include_null_first_air_dates=false") + .map { data -> [Show]? in + guard let data = data, + let response = try? JSONDecoder().decode(ShowsResponse.self, from: data) else { + return nil + } + return response.results + } + } + + func fetchMovieDetails(forMovieId id: Int) -> Observable { + return httpClient.get(url: "https://api.themoviedb.org/3/movie/\(id)?api_key=\(Constants.apiKey)&language=en-US)") + .map { data -> Movie? in + guard let data = data, + let response = try? JSONDecoder().decode(Movie.self, from: data) else { + return nil + } + return response + } + } + + func searchMovies(forQuery query: String) -> Observable<[Movie]?> { + return httpClient.get(url: "https://api.themoviedb.org/3/search/movie?api_key=\(Constants.apiKey)&language=en-US&query=\(query)&page=1&include_adult=false") + .map { data -> [Movie]? in + guard let data = data, + let response = try? JSONDecoder().decode(MoviesResponse.self, from: data) else { + return nil + } + + return response.results + } + } + + func searchPeople(forQuery query: String) -> Observable<[Person]?> { + return httpClient.get(url: "https://api.themoviedb.org/3/search/person?api_key=\(Constants.apiKey)&language=en-US&query=\(query)&page=1&include_adult=false") + .map { data -> [Person]? in + guard let data = data, + let response = try? JSONDecoder().decode(PeopleResponse.self, from: data) else { + return nil + } + return response.results + } + } + + func login(withUsername username: String, password: String) -> Observable { + return fetchAuthToken() + .flatMap { [weak self] (token: String?) -> Observable in + guard let strongSelf = self, + let token = token else { return Observable.just(nil) } + return strongSelf.httpClient.post(url: "https://api.themoviedb.org/3/authentication/token/validate_with_login?api_key=\(Constants.apiKey)", + params: ["username": username, "password": password, "request_token": token]) + } + .map { (data: Data?) -> Bool in + guard let data = data, + let response = try? JSONDecoder().decode(LoginResponse.self, from: data) else { + return false + } + return response.success + } + } + + + private func fetchAuthToken() -> Observable { + return httpClient.get(url: "https://api.themoviedb.org/3/authentication/token/new?api_key=\(Constants.apiKey)") + .map { data -> String? in + guard let data = data, + let response = try? JSONDecoder().decode(AuthTokenResponse.self, from: data) else { + return nil + } + return response.requestToken + } + } +} + +extension TMDBApi: StaticFactory { + enum Factory { + static let `default`: TMDBApiProvider = TMDBApi() + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Networking/TMDBApiResponses.swift b/tmdb-rx-driver/tmdb-rx-driver/Networking/TMDBApiResponses.swift new file mode 100644 index 0000000..9e357d3 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Networking/TMDBApiResponses.swift @@ -0,0 +1,33 @@ +// +// TMDBApiResponses.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 30/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import Foundation + +struct PeopleResponse: Decodable { + let results: [Person] +} + +struct ShowsResponse: Decodable { + let results: [Show] +} + +struct MoviesResponse: Decodable { + let results: [Movie] +} + +struct LoginResponse: Decodable { + let success: Bool +} + +struct AuthTokenResponse: Decodable { + let requestToken: String + + enum CodingKeys: String, CodingKey { + case requestToken = "request_token" + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Resource/R.generated.swift b/tmdb-rx-driver/tmdb-rx-driver/Resource/R.generated.swift new file mode 100644 index 0000000..1addcf3 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Resource/R.generated.swift @@ -0,0 +1,466 @@ +// +// This is a generated file, do not edit! +// Generated by R.swift, see https://github.com/mac-cain13/R.swift +// + +import Foundation +import Rswift +import UIKit + +/// This `R` struct is generated and contains references to static resources. +struct R: Rswift.Validatable { + fileprivate static let applicationLocale = hostingBundle.preferredLocalizations.first.flatMap { Locale(identifier: $0) } ?? Locale.current + fileprivate static let hostingBundle = Bundle(for: R.Class.self) + + /// Find first language and bundle for which the table exists + fileprivate static func localeBundle(tableName: String, preferredLanguages: [String]) -> (Foundation.Locale, Foundation.Bundle)? { + // Filter preferredLanguages to localizations, use first locale + var languages = preferredLanguages + .map { Locale(identifier: $0) } + .prefix(1) + .flatMap { locale -> [String] in + if hostingBundle.localizations.contains(locale.identifier) { + if let language = locale.languageCode, hostingBundle.localizations.contains(language) { + return [locale.identifier, language] + } else { + return [locale.identifier] + } + } else if let language = locale.languageCode, hostingBundle.localizations.contains(language) { + return [language] + } else { + return [] + } + } + + // If there's no languages, use development language as backstop + if languages.isEmpty { + if let developmentLocalization = hostingBundle.developmentLocalization { + languages = [developmentLocalization] + } + } else { + // Insert Base as second item (between locale identifier and languageCode) + languages.insert("Base", at: 1) + + // Add development language as backstop + if let developmentLocalization = hostingBundle.developmentLocalization { + languages.append(developmentLocalization) + } + } + + // Find first language for which table exists + // Note: key might not exist in chosen language (in that case, key will be shown) + for language in languages { + if let lproj = hostingBundle.url(forResource: language, withExtension: "lproj"), + let lbundle = Bundle(url: lproj) + { + let strings = lbundle.url(forResource: tableName, withExtension: "strings") + let stringsdict = lbundle.url(forResource: tableName, withExtension: "stringsdict") + + if strings != nil || stringsdict != nil { + return (Locale(identifier: language), lbundle) + } + } + } + + // If table is available in main bundle, don't look for localized resources + let strings = hostingBundle.url(forResource: tableName, withExtension: "strings", subdirectory: nil, localization: nil) + let stringsdict = hostingBundle.url(forResource: tableName, withExtension: "stringsdict", subdirectory: nil, localization: nil) + + if strings != nil || stringsdict != nil { + return (applicationLocale, hostingBundle) + } + + // If table is not found for requested languages, key will be shown + return nil + } + + /// Load string from Info.plist file + fileprivate static func infoPlistString(path: [String], key: String) -> String? { + var dict = hostingBundle.infoDictionary + for step in path { + guard let obj = dict?[step] as? [String: Any] else { return nil } + dict = obj + } + return dict?[key] as? String + } + + static func validate() throws { + try intern.validate() + } + + #if os(iOS) || os(tvOS) + /// This `R.storyboard` struct is generated, and contains static references to 2 storyboards. + struct storyboard { + /// Storyboard `LaunchScreen`. + static let launchScreen = _R.storyboard.launchScreen() + /// Storyboard `Main`. + static let main = _R.storyboard.main() + + #if os(iOS) || os(tvOS) + /// `UIStoryboard(name: "LaunchScreen", bundle: ...)` + static func launchScreen(_: Void = ()) -> UIKit.UIStoryboard { + return UIKit.UIStoryboard(resource: R.storyboard.launchScreen) + } + #endif + + #if os(iOS) || os(tvOS) + /// `UIStoryboard(name: "Main", bundle: ...)` + static func main(_: Void = ()) -> UIKit.UIStoryboard { + return UIKit.UIStoryboard(resource: R.storyboard.main) + } + #endif + + fileprivate init() {} + } + #endif + + /// This `R.image` struct is generated, and contains static references to 5 images. + struct image { + /// Image `aquaman`. + static let aquaman = Rswift.ImageResource(bundle: R.hostingBundle, name: "aquaman") + /// Image `back_arrow`. + static let back_arrow = Rswift.ImageResource(bundle: R.hostingBundle, name: "back_arrow") + /// Image `sample`. + static let sample = Rswift.ImageResource(bundle: R.hostingBundle, name: "sample") + /// Image `search_icon`. + static let search_icon = Rswift.ImageResource(bundle: R.hostingBundle, name: "search_icon") + /// Image `star_icon`. + static let star_icon = Rswift.ImageResource(bundle: R.hostingBundle, name: "star_icon") + + #if os(iOS) || os(tvOS) + /// `UIImage(named: "aquaman", bundle: ..., traitCollection: ...)` + static func aquaman(compatibleWith traitCollection: UIKit.UITraitCollection? = nil) -> UIKit.UIImage? { + return UIKit.UIImage(resource: R.image.aquaman, compatibleWith: traitCollection) + } + #endif + + #if os(iOS) || os(tvOS) + /// `UIImage(named: "back_arrow", bundle: ..., traitCollection: ...)` + static func back_arrow(compatibleWith traitCollection: UIKit.UITraitCollection? = nil) -> UIKit.UIImage? { + return UIKit.UIImage(resource: R.image.back_arrow, compatibleWith: traitCollection) + } + #endif + + #if os(iOS) || os(tvOS) + /// `UIImage(named: "sample", bundle: ..., traitCollection: ...)` + static func sample(compatibleWith traitCollection: UIKit.UITraitCollection? = nil) -> UIKit.UIImage? { + return UIKit.UIImage(resource: R.image.sample, compatibleWith: traitCollection) + } + #endif + + #if os(iOS) || os(tvOS) + /// `UIImage(named: "search_icon", bundle: ..., traitCollection: ...)` + static func search_icon(compatibleWith traitCollection: UIKit.UITraitCollection? = nil) -> UIKit.UIImage? { + return UIKit.UIImage(resource: R.image.search_icon, compatibleWith: traitCollection) + } + #endif + + #if os(iOS) || os(tvOS) + /// `UIImage(named: "star_icon", bundle: ..., traitCollection: ...)` + static func star_icon(compatibleWith traitCollection: UIKit.UITraitCollection? = nil) -> UIKit.UIImage? { + return UIKit.UIImage(resource: R.image.star_icon, compatibleWith: traitCollection) + } + #endif + + fileprivate init() {} + } + + /// This `R.nib` struct is generated, and contains static references to 6 nibs. + struct nib { + /// Nib `CarouselSectionCell`. + static let carouselSectionCell = _R.nib._CarouselSectionCell() + /// Nib `DiscoverMainView`. + static let discoverMainView = _R.nib._DiscoverMainView() + /// Nib `MovieCell`. + static let movieCell = _R.nib._MovieCell() + /// Nib `MovieDetailHeaderView`. + static let movieDetailHeaderView = _R.nib._MovieDetailHeaderView() + /// Nib `MovieDetailTipsView`. + static let movieDetailTipsView = _R.nib._MovieDetailTipsView() + /// Nib `SearchCell`. + static let searchCell = _R.nib._SearchCell() + + #if os(iOS) || os(tvOS) + /// `UINib(name: "CarouselSectionCell", in: bundle)` + @available(*, deprecated, message: "Use UINib(resource: R.nib.carouselSectionCell) instead") + static func carouselSectionCell(_: Void = ()) -> UIKit.UINib { + return UIKit.UINib(resource: R.nib.carouselSectionCell) + } + #endif + + #if os(iOS) || os(tvOS) + /// `UINib(name: "DiscoverMainView", in: bundle)` + @available(*, deprecated, message: "Use UINib(resource: R.nib.discoverMainView) instead") + static func discoverMainView(_: Void = ()) -> UIKit.UINib { + return UIKit.UINib(resource: R.nib.discoverMainView) + } + #endif + + #if os(iOS) || os(tvOS) + /// `UINib(name: "MovieCell", in: bundle)` + @available(*, deprecated, message: "Use UINib(resource: R.nib.movieCell) instead") + static func movieCell(_: Void = ()) -> UIKit.UINib { + return UIKit.UINib(resource: R.nib.movieCell) + } + #endif + + #if os(iOS) || os(tvOS) + /// `UINib(name: "MovieDetailHeaderView", in: bundle)` + @available(*, deprecated, message: "Use UINib(resource: R.nib.movieDetailHeaderView) instead") + static func movieDetailHeaderView(_: Void = ()) -> UIKit.UINib { + return UIKit.UINib(resource: R.nib.movieDetailHeaderView) + } + #endif + + #if os(iOS) || os(tvOS) + /// `UINib(name: "MovieDetailTipsView", in: bundle)` + @available(*, deprecated, message: "Use UINib(resource: R.nib.movieDetailTipsView) instead") + static func movieDetailTipsView(_: Void = ()) -> UIKit.UINib { + return UIKit.UINib(resource: R.nib.movieDetailTipsView) + } + #endif + + #if os(iOS) || os(tvOS) + /// `UINib(name: "SearchCell", in: bundle)` + @available(*, deprecated, message: "Use UINib(resource: R.nib.searchCell) instead") + static func searchCell(_: Void = ()) -> UIKit.UINib { + return UIKit.UINib(resource: R.nib.searchCell) + } + #endif + + static func carouselSectionCell(owner ownerOrNil: AnyObject?, options optionsOrNil: [UINib.OptionsKey : Any]? = nil) -> CarouselSectionCell? { + return R.nib.carouselSectionCell.instantiate(withOwner: ownerOrNil, options: optionsOrNil)[0] as? CarouselSectionCell + } + + static func discoverMainView(owner ownerOrNil: AnyObject?, options optionsOrNil: [UINib.OptionsKey : Any]? = nil) -> UIKit.UIView? { + return R.nib.discoverMainView.instantiate(withOwner: ownerOrNil, options: optionsOrNil)[0] as? UIKit.UIView + } + + static func movieCell(owner ownerOrNil: AnyObject?, options optionsOrNil: [UINib.OptionsKey : Any]? = nil) -> MovieCell? { + return R.nib.movieCell.instantiate(withOwner: ownerOrNil, options: optionsOrNil)[0] as? MovieCell + } + + static func movieDetailHeaderView(owner ownerOrNil: AnyObject?, options optionsOrNil: [UINib.OptionsKey : Any]? = nil) -> UIKit.UIView? { + return R.nib.movieDetailHeaderView.instantiate(withOwner: ownerOrNil, options: optionsOrNil)[0] as? UIKit.UIView + } + + static func movieDetailTipsView(owner ownerOrNil: AnyObject?, options optionsOrNil: [UINib.OptionsKey : Any]? = nil) -> UIKit.UIView? { + return R.nib.movieDetailTipsView.instantiate(withOwner: ownerOrNil, options: optionsOrNil)[0] as? UIKit.UIView + } + + static func searchCell(owner ownerOrNil: AnyObject?, options optionsOrNil: [UINib.OptionsKey : Any]? = nil) -> SearchCell? { + return R.nib.searchCell.instantiate(withOwner: ownerOrNil, options: optionsOrNil)[0] as? SearchCell + } + + fileprivate init() {} + } + + /// This `R.reuseIdentifier` struct is generated, and contains static references to 3 reuse identifiers. + struct reuseIdentifier { + /// Reuse identifier `CarouselSectionCell`. + static let carouselSectionCell: Rswift.ReuseIdentifier = Rswift.ReuseIdentifier(identifier: "CarouselSectionCell") + /// Reuse identifier `MovieCell`. + static let movieCell: Rswift.ReuseIdentifier = Rswift.ReuseIdentifier(identifier: "MovieCell") + /// Reuse identifier `SearchCell`. + static let searchCell: Rswift.ReuseIdentifier = Rswift.ReuseIdentifier(identifier: "SearchCell") + + fileprivate init() {} + } + + fileprivate struct intern: Rswift.Validatable { + fileprivate static func validate() throws { + try _R.validate() + } + + fileprivate init() {} + } + + fileprivate class Class {} + + fileprivate init() {} +} + +struct _R: Rswift.Validatable { + static func validate() throws { + #if os(iOS) || os(tvOS) + try nib.validate() + #endif + #if os(iOS) || os(tvOS) + try storyboard.validate() + #endif + } + + #if os(iOS) || os(tvOS) + struct nib: Rswift.Validatable { + static func validate() throws { + try _MovieCell.validate() + try _MovieDetailHeaderView.validate() + } + + struct _CarouselSectionCell: Rswift.NibResourceType, Rswift.ReuseIdentifierType { + typealias ReusableType = CarouselSectionCell + + let bundle = R.hostingBundle + let identifier = "CarouselSectionCell" + let name = "CarouselSectionCell" + + func firstView(owner ownerOrNil: AnyObject?, options optionsOrNil: [UINib.OptionsKey : Any]? = nil) -> CarouselSectionCell? { + return instantiate(withOwner: ownerOrNil, options: optionsOrNil)[0] as? CarouselSectionCell + } + + fileprivate init() {} + } + + struct _DiscoverMainView: Rswift.NibResourceType { + let bundle = R.hostingBundle + let name = "DiscoverMainView" + + func firstView(owner ownerOrNil: AnyObject?, options optionsOrNil: [UINib.OptionsKey : Any]? = nil) -> UIKit.UIView? { + return instantiate(withOwner: ownerOrNil, options: optionsOrNil)[0] as? UIKit.UIView + } + + fileprivate init() {} + } + + struct _MovieCell: Rswift.NibResourceType, Rswift.ReuseIdentifierType, Rswift.Validatable { + typealias ReusableType = MovieCell + + let bundle = R.hostingBundle + let identifier = "MovieCell" + let name = "MovieCell" + + func firstView(owner ownerOrNil: AnyObject?, options optionsOrNil: [UINib.OptionsKey : Any]? = nil) -> MovieCell? { + return instantiate(withOwner: ownerOrNil, options: optionsOrNil)[0] as? MovieCell + } + + static func validate() throws { + if UIKit.UIImage(named: "sample", in: R.hostingBundle, compatibleWith: nil) == nil { throw Rswift.ValidationError(description: "[R.swift] Image named 'sample' is used in nib 'MovieCell', but couldn't be loaded.") } + if #available(iOS 11.0, tvOS 11.0, *) { + } + } + + fileprivate init() {} + } + + struct _MovieDetailHeaderView: Rswift.NibResourceType, Rswift.Validatable { + let bundle = R.hostingBundle + let name = "MovieDetailHeaderView" + + func firstView(owner ownerOrNil: AnyObject?, options optionsOrNil: [UINib.OptionsKey : Any]? = nil) -> UIKit.UIView? { + return instantiate(withOwner: ownerOrNil, options: optionsOrNil)[0] as? UIKit.UIView + } + + static func validate() throws { + if UIKit.UIImage(named: "star_icon", in: R.hostingBundle, compatibleWith: nil) == nil { throw Rswift.ValidationError(description: "[R.swift] Image named 'star_icon' is used in nib 'MovieDetailHeaderView', but couldn't be loaded.") } + if #available(iOS 11.0, tvOS 11.0, *) { + } + } + + fileprivate init() {} + } + + struct _MovieDetailTipsView: Rswift.NibResourceType { + let bundle = R.hostingBundle + let name = "MovieDetailTipsView" + + func firstView(owner ownerOrNil: AnyObject?, options optionsOrNil: [UINib.OptionsKey : Any]? = nil) -> UIKit.UIView? { + return instantiate(withOwner: ownerOrNil, options: optionsOrNil)[0] as? UIKit.UIView + } + + fileprivate init() {} + } + + struct _SearchCell: Rswift.NibResourceType, Rswift.ReuseIdentifierType { + typealias ReusableType = SearchCell + + let bundle = R.hostingBundle + let identifier = "SearchCell" + let name = "SearchCell" + + func firstView(owner ownerOrNil: AnyObject?, options optionsOrNil: [UINib.OptionsKey : Any]? = nil) -> SearchCell? { + return instantiate(withOwner: ownerOrNil, options: optionsOrNil)[0] as? SearchCell + } + + fileprivate init() {} + } + + fileprivate init() {} + } + #endif + + #if os(iOS) || os(tvOS) + struct storyboard: Rswift.Validatable { + static func validate() throws { + #if os(iOS) || os(tvOS) + try launchScreen.validate() + #endif + #if os(iOS) || os(tvOS) + try main.validate() + #endif + } + + #if os(iOS) || os(tvOS) + struct launchScreen: Rswift.StoryboardResourceWithInitialControllerType, Rswift.Validatable { + typealias InitialController = UIKit.UIViewController + + let bundle = R.hostingBundle + let name = "LaunchScreen" + + static func validate() throws { + if #available(iOS 11.0, tvOS 11.0, *) { + } + } + + fileprivate init() {} + } + #endif + + #if os(iOS) || os(tvOS) + struct main: Rswift.StoryboardResourceWithInitialControllerType, Rswift.Validatable { + typealias InitialController = LoginViewController + + let bundle = R.hostingBundle + let discoverViewController = StoryboardViewControllerResource(identifier: "DiscoverViewController") + let loginViewController = StoryboardViewControllerResource(identifier: "LoginViewController") + let movieDetailViewController = StoryboardViewControllerResource(identifier: "MovieDetailViewController") + let name = "Main" + let searchViewController = StoryboardViewControllerResource(identifier: "SearchViewController") + + func discoverViewController(_: Void = ()) -> DiscoverViewController? { + return UIKit.UIStoryboard(resource: self).instantiateViewController(withResource: discoverViewController) + } + + func loginViewController(_: Void = ()) -> LoginViewController? { + return UIKit.UIStoryboard(resource: self).instantiateViewController(withResource: loginViewController) + } + + func movieDetailViewController(_: Void = ()) -> MovieDetailViewController? { + return UIKit.UIStoryboard(resource: self).instantiateViewController(withResource: movieDetailViewController) + } + + func searchViewController(_: Void = ()) -> SearchViewController? { + return UIKit.UIStoryboard(resource: self).instantiateViewController(withResource: searchViewController) + } + + static func validate() throws { + if UIKit.UIImage(named: "aquaman", in: R.hostingBundle, compatibleWith: nil) == nil { throw Rswift.ValidationError(description: "[R.swift] Image named 'aquaman' is used in storyboard 'Main', but couldn't be loaded.") } + if UIKit.UIImage(named: "back_arrow", in: R.hostingBundle, compatibleWith: nil) == nil { throw Rswift.ValidationError(description: "[R.swift] Image named 'back_arrow' is used in storyboard 'Main', but couldn't be loaded.") } + if UIKit.UIImage(named: "search_icon", in: R.hostingBundle, compatibleWith: nil) == nil { throw Rswift.ValidationError(description: "[R.swift] Image named 'search_icon' is used in storyboard 'Main', but couldn't be loaded.") } + if #available(iOS 11.0, tvOS 11.0, *) { + } + if _R.storyboard.main().discoverViewController() == nil { throw Rswift.ValidationError(description:"[R.swift] ViewController with identifier 'discoverViewController' could not be loaded from storyboard 'Main' as 'DiscoverViewController'.") } + if _R.storyboard.main().loginViewController() == nil { throw Rswift.ValidationError(description:"[R.swift] ViewController with identifier 'loginViewController' could not be loaded from storyboard 'Main' as 'LoginViewController'.") } + if _R.storyboard.main().movieDetailViewController() == nil { throw Rswift.ValidationError(description:"[R.swift] ViewController with identifier 'movieDetailViewController' could not be loaded from storyboard 'Main' as 'MovieDetailViewController'.") } + if _R.storyboard.main().searchViewController() == nil { throw Rswift.ValidationError(description:"[R.swift] ViewController with identifier 'searchViewController' could not be loaded from storyboard 'Main' as 'SearchViewController'.") } + } + + fileprivate init() {} + } + #endif + + fileprivate init() {} + } + #endif + + fileprivate init() {} +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverNavigator.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverNavigator.swift new file mode 100644 index 0000000..58dfb66 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverNavigator.swift @@ -0,0 +1,42 @@ +// +// DiscoverNavigator.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 27/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import UIKit + +protocol DiscoverNavigatable { + func navigateToMovieDetailScreen(withMovieId id: Int, api: TMDBApiProvider) + func navigateToPersonDetailScreen() + func navigateToShowDetailScreen() +} + +final class DiscoverNavigator: DiscoverNavigatable { + private let navigationController: UINavigationController + + init(navigationController: UINavigationController) { + self.navigationController = navigationController + } + + func navigateToMovieDetailScreen(withMovieId id: Int, api: TMDBApiProvider) { + let movieDetailNavigator = MovieDetailNavigator(navigationController: navigationController) + let movieDetailViewModel = MovieDetailViewModel(dependencies: MovieDetailViewModel.Dependencies(id: id, + api: api, + navigator: movieDetailNavigator)) + let movieDetailViewController = UIStoryboard.main.movieDetailViewController + movieDetailViewController.viewModel = movieDetailViewModel + + navigationController.show(movieDetailViewController, sender: nil) + } + + func navigateToPersonDetailScreen() { + + } + + func navigateToShowDetailScreen() { + + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewController.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewController.swift new file mode 100644 index 0000000..5d67ebe --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewController.swift @@ -0,0 +1,56 @@ +// +// DiscoverViewController.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 27/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import UIKit +import RxSwift +import RxCocoa + +final class DiscoverViewController: UIViewController { + var viewModel: DiscoverViewModel! + + @IBOutlet weak var carouselsView: DiscoverMainView! + + private let disposeBag = DisposeBag() + + override func viewDidLoad() { + super.viewDidLoad() + bindViewModel() + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.navigationController?.setNavigationBarHidden(true, animated: animated) + } + + override var preferredStatusBarStyle: UIStatusBarStyle { + return .lightContent + } + + private func bindViewModel() { + let input = DiscoverViewModel.Input(ready: rx.viewWillAppear.map({ _ in }).asDriver(), + selected: carouselsView.selectedIndex.asDriver(onErrorJustReturn: (0, 0))) + + let output = viewModel.transform(input: input) + + output.loading + .drive(UIApplication.shared.rx.isNetworkActivityIndicatorVisible) + .disposed(by: disposeBag) + + output.results + .drive(onNext: { [weak self] caroselViewModel in + guard let strongSelf = self else { return } + strongSelf.carouselsView.setDataSource(caroselViewModel) + strongSelf.carouselsView.reloadData() + }) + .disposed(by: disposeBag) + + output.selected + .drive() + .disposed(by: disposeBag) + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewModel.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewModel.swift new file mode 100644 index 0000000..a14c0e2 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewModel.swift @@ -0,0 +1,141 @@ +// +// DiscoverViewModel.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 27/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import RxSwift +import RxCocoa + +final class DiscoverViewModel: ViewModelType { + struct Input { + let ready: Driver + let selected: Driver<(Int, Int)> + } + + struct Output { + let loading: Driver + let results: Driver<[CarouselViewModel]> + let selected: Driver + } + + struct Dependencies { + let api: TMDBApiProvider + let navigator: DiscoverNavigatable + } + + private let dependencies: Dependencies + + init(dependencies: Dependencies) { + self.dependencies = dependencies + } + + func transform(input: DiscoverViewModel.Input) -> DiscoverViewModel.Output { + let activityIndicator = ActivityIndicator() + let loading = activityIndicator.asDriver() + + let results = input.ready + .asObservable() + .flatMap { + Observable.zip(self.dependencies.api.fetchPopularMovies(), + self.dependencies.api.fetchPopularPeople(), + self.dependencies.api.fetchPopularShows()) + .trackActivity(activityIndicator) + } + .share() + + let mappedResults = results + .map { movies, people, shows in + return [CarouselViewModel(movies: movies), + CarouselViewModel(people: people), + CarouselViewModel(shows: shows)] + .compactMap { $0 } // If one of the network requests fails, CarouselViewModel is nil and compactMap removes nils from array + // so the data is not displayed + } + .asDriver(onErrorJustReturn: []) + + let selected = input.selected + .asObservable() + .withLatestFrom(results) { ($0, $1 ) } + .do(onNext: { [weak self] (index: (Int, Int), res: ([Movie]?, [Person]?, [Show]?)) in + guard let strongSelf = self else { return } + let (carouselIndex, itemIndex) = index + let (movies, _, _) = res + + switch carouselIndex { + case 0: + guard let id = movies?[itemIndex].id else { return } + strongSelf.dependencies.navigator.navigateToMovieDetailScreen(withMovieId: id, + api: strongSelf.dependencies.api) + case 1: strongSelf.dependencies.navigator.navigateToPersonDetailScreen() + case 2: strongSelf.dependencies.navigator.navigateToShowDetailScreen() + default: return + } + }) + .map { _ in () } + .asDriver(onErrorJustReturn: ()) + + return Output(loading: loading, + results: mappedResults, + selected: selected) + } +} + + +extension CarouselViewModel { + init?(movies: [Movie]?) { + guard let movies = movies else { return nil } + self.title = "Popular movies" + self.subtitle = "Most popular in the world" + self.items = movies.map { CarouselItemViewModel(movie: $0) } + } + + init?(people: [Person]?) { + guard let people = people else { return nil } + self.title = "Trending people" + self.subtitle = "Find out which celebrities are trending today" + self.items = people.map { CarouselItemViewModel(person: $0) } + + } + + init?(shows: [Show]?) { + guard let shows = shows else { return nil } + self.title = "TV shows" + self.subtitle = "Latest updates on popular TV shows" + self.items = shows.map { CarouselItemViewModel(show: $0) } + } +} + +struct CarouselItemViewModel { + let title: String + let subtitle: String + let imageUrl: String? +} + +struct CarouselViewModel { + let title: String + let subtitle: String + let items: [CarouselItemViewModel] +} + +extension CarouselItemViewModel { + init(movie: Movie) { + self.title = movie.title + self.subtitle = movie.releaseDate + self.imageUrl = movie.posterUrl.flatMap { "http://image.tmdb.org/t/p/w185/" + $0 } + } + + init(person: Person) { + self.title = person.name + self.subtitle = person.knownForTitles?.first ?? " " + self.imageUrl = person.profileUrl.flatMap { "http://image.tmdb.org/t/p/w185/" + $0 } + } + + init(show: Show) { + self.title = show.name + self.subtitle = show.releaseDate + self.imageUrl = "http://image.tmdb.org/t/p/w185/" + show.posterUrl + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/CarouselSectionCell.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/CarouselSectionCell.swift new file mode 100644 index 0000000..c3799a9 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/CarouselSectionCell.swift @@ -0,0 +1,48 @@ +// +// CarouselSection.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 28/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import UIKit + +final class CarouselSectionCell: UITableViewCell { + @IBOutlet weak var collectionViewHeightConstraint: NSLayoutConstraint! + @IBOutlet weak var titleLabel: UILabel! + @IBOutlet weak var subtitleLabel: UILabel! + @IBOutlet weak var collectionView: UICollectionView! + + override func awakeFromNib() { + let layout: UICollectionViewFlowLayout = { + let layout = UICollectionViewFlowLayout() + layout.estimatedItemSize = CGSize(width: 140, height: 235) + layout.scrollDirection = .horizontal + layout.estimatedItemSize = UICollectionViewFlowLayout.automaticSize + return layout + }() + + collectionView.register(UINib(nibName: String(describing: MovieCell.self), bundle: nil), + forCellWithReuseIdentifier: String(describing: MovieCell.self)) + collectionView.collectionViewLayout = layout + collectionViewHeightConstraint.constant = MovieCell.height(forWidth: 140) + collectionViewHeightConstraint.isActive = true + collectionView.contentInset = UIEdgeInsets(top: 0, left: 20, bottom: 0, right: 20) + } +} + +extension CarouselSectionCell { + var collectionViewOffset: CGFloat { + get { return collectionView.contentOffset.x } + set { collectionView.contentOffset.x = newValue } + } + + func setCollectionViewDataSourceDelegate(_ dataSourceDelegate: D, forRow row: Int) { + collectionView.delegate = dataSourceDelegate + collectionView.dataSource = dataSourceDelegate + collectionView.tag = row + collectionView.setContentOffset(collectionView.contentOffset, animated:false) // Stops collection view if it was scrolling. + collectionView.reloadData() + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/CarouselSectionCell.xib b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/CarouselSectionCell.xib new file mode 100644 index 0000000..14793ba --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/CarouselSectionCell.xib @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/DiscoverMainView.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/DiscoverMainView.swift new file mode 100644 index 0000000..e5cf9b9 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/DiscoverMainView.swift @@ -0,0 +1,121 @@ + +// +// CarouselVIew.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 28/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import UIKit +import Nuke +import RxSwift +import RxCocoa + +final class DiscoverMainView: UIView { + private var dataSource: [CarouselViewModel]? + private var storedOffsets = [Int: CGFloat]() + @IBOutlet private var contentView: UIView! + @IBOutlet private weak var tableView: UITableView! + private let selectedIndexSubject = PublishSubject<(Int, Int)>() + var selectedIndex: Observable<(Int, Int)> { + return selectedIndexSubject.asObservable() + } + + override init(frame: CGRect) { + super.init(frame: frame) + setup() + } + + required init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + setup() + } + + override func awakeFromNib() { + tableView.register(UINib(nibName: String(describing: CarouselSectionCell.self), bundle: nil), + forCellReuseIdentifier: String(describing: CarouselSectionCell.self)) + tableView.delegate = self + tableView.dataSource = self + } + + func reloadData() { + tableView.reloadData() + } + + func setDataSource(_ dataSource: [CarouselViewModel]) { + self.dataSource = dataSource + } + + private func setup() { + Bundle.main.loadNibNamed(String(describing: DiscoverMainView.self), owner: self, options: nil) + addSubview(contentView) + + contentView.frame = self.bounds + contentView.autoresizingMask = [.flexibleHeight, .flexibleWidth] + } +} + +extension DiscoverMainView: UITableViewDataSource { + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return dataSource?.count ?? 0 + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + guard let data = dataSource else { return UITableViewCell() } // No-op + + let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: CarouselSectionCell.self), + for: indexPath) as! CarouselSectionCell + let carouselData = data[indexPath.row] + cell.titleLabel.text = carouselData.title + cell.subtitleLabel.text = carouselData.subtitle + return cell + } +} + +extension DiscoverMainView: UITableViewDelegate { + func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { + guard let tableViewCell = cell as? CarouselSectionCell else { return } + + tableViewCell.setCollectionViewDataSourceDelegate(self, forRow: indexPath.row) + tableViewCell.collectionViewOffset = storedOffsets[indexPath.row] ?? 0 + } + + func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { + guard let tableViewCell = cell as? CarouselSectionCell else { return } + storedOffsets[indexPath.row] = tableViewCell.collectionViewOffset + } +} + +extension DiscoverMainView :UICollectionViewDelegate { + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + selectedIndexSubject.onNext((collectionView.tag, indexPath.item)) + } +} + +extension DiscoverMainView: UICollectionViewDataSource { + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return dataSource?[collectionView.tag].items.count ?? 0 + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + guard let data = dataSource else { return UICollectionViewCell() } // No-op + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: String(describing: MovieCell.self), for: indexPath) as! MovieCell + let item = data[collectionView.tag].items[indexPath.item] + cell.titleLabel.text = item.title + cell.subtitleLabel.text = item.subtitle + if let url = item.imageUrl { + Nuke.loadImage(with: URL(string: url)!, into: cell.imageView) + } + return cell + } +} + +extension DiscoverMainView: UICollectionViewDelegateFlowLayout { + func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { + let itemsPerRow: CGFloat = 4 + let width = collectionView.bounds.width / itemsPerRow + let height = collectionView.bounds.height + return CGSize(width: width, height: height) + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/DiscoverMainView.xib b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/DiscoverMainView.xib new file mode 100644 index 0000000..2a13052 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/DiscoverMainView.xib @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/MovieCell.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/MovieCell.swift new file mode 100644 index 0000000..a5ab9bc --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/MovieCell.swift @@ -0,0 +1,39 @@ +// +// MovieCell.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 28/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import UIKit + +class MovieCell: UICollectionViewCell { + @IBOutlet weak var imageView: UIImageView! + @IBOutlet weak var titleLabel: UILabel! + @IBOutlet weak var subtitleLabel: UILabel! + + private struct Constants { + static let maxHeight: CGFloat = 400 + } + + private static let sizingCell = UINib(nibName: String(describing: MovieCell.self), bundle: nil) + .instantiate(withOwner: nil, options: nil).first! as! MovieCell + + static func height(forWidth width: CGFloat) -> CGFloat { + sizingCell.prepareForReuse() + sizingCell.layoutIfNeeded() + + var fittingSize = UIView.layoutFittingCompressedSize + fittingSize.width = width + let size = sizingCell.contentView.systemLayoutSizeFitting(fittingSize, + withHorizontalFittingPriority: .required, + verticalFittingPriority: .defaultLow) + + guard size.height < Constants.maxHeight else { + return Constants.maxHeight + } + + return size.height + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/MovieCell.xib b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/MovieCell.xib new file mode 100644 index 0000000..31440bc --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/MovieCell.xib @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginNavigator.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginNavigator.swift new file mode 100644 index 0000000..daf65b6 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginNavigator.swift @@ -0,0 +1,25 @@ +// +// LoginNavigator.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 27/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import UIKit + +protocol LoginNavigatable { + func toMain() +} + +final class LoginNavigator { + private let navigationController: UINavigationController + + init(navigationController: UINavigationController) { + self.navigationController = navigationController + } + + func toMain() { + navigationController.dismiss(animated: true, completion: nil) + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginViewController.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginViewController.swift new file mode 100644 index 0000000..1636ba8 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginViewController.swift @@ -0,0 +1,72 @@ +// +// LoginViewController.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 27/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import UIKit +import RxSwift +import RxCocoa + +final class LoginViewController: UIViewController { + var viewModel: LoginViewModel! + + @IBOutlet weak var usernameTextField: UITextField! + @IBOutlet weak var passwordTextField: UITextField! + @IBOutlet weak var loginButton: UIButton! + + private let disposeBag = DisposeBag() + + override func viewDidLoad() { + super.viewDidLoad() + bindViewModel() + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.navigationController?.setNavigationBarHidden(true, animated: animated) + } + + override var preferredStatusBarStyle: UIStatusBarStyle { + return .lightContent + } + + private func bindViewModel() { + let input = LoginViewModel.Input( + username: usernameTextField.rx.text.orEmpty.asDriver(), + password: passwordTextField.rx.text.orEmpty.asDriver(), + loginTaps: loginButton.rx.tap.asSignal() + ) + + let output = viewModel.transform(input: input) + + output.enabled + .drive(loginButton.rx.isEnabled) + .disposed(by: disposeBag) + + output.enabled + .drive(onNext: { [weak self] enabled in + guard let strongSelf = self else { return } + strongSelf.loginButton.backgroundColor = enabled ? + UIColor(red: 255/255, green: 185/255, blue: 45/255, alpha: 1.0) : + UIColor.lightGray + }) + .disposed(by: disposeBag) + + output.loading + .drive(UIApplication.shared.rx.isNetworkActivityIndicatorVisible) + .disposed(by: disposeBag) + + output.result + .filter { $0 == LoginResult.failure } + .drive(onNext: { [weak self] _ in + guard let strongSelf = self else { return } + let alert = UIAlertController(title: "Oops!", message: "Login failed", preferredStyle: .alert) + alert.addAction(UIAlertAction(title: "OK", style: .default) { _ in }) + strongSelf.present(alert, animated: true, completion: nil) + }) + .disposed(by: disposeBag) + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginViewModel.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginViewModel.swift new file mode 100644 index 0000000..e4506ec --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginViewModel.swift @@ -0,0 +1,73 @@ +// +// LoginViewModel.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 27/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import RxSwift +import RxCocoa + +enum LoginResult { + case success + case failure +} + +final class LoginViewModel: ViewModelType { + struct Input { + let username: Driver + let password: Driver + let loginTaps: Signal + } + + struct Output { + let enabled: Driver + let loading: Driver + let result: Driver + } + + struct Dependencies { + let api: TMDBApiProvider + let navigator: LoginNavigator + } + + private let dependencies: Dependencies + + init(dependencies: Dependencies) { + self.dependencies = dependencies + } + + func transform(input: LoginViewModel.Input) -> LoginViewModel.Output { + let isUsernameValid = input.username + .map { $0.count > 0 } + let isPasswordValid = input.password + .map { $0.count >= 4 } + let enabled = Driver.combineLatest(isUsernameValid, isPasswordValid) { $0 && $1 } + + let loadingIndicator = ActivityIndicator() + let loading = loadingIndicator.asDriver() + + let usernameAndPassword = Driver.combineLatest(input.username, input.password) { ($0, $1 )} + .asObservable() + let result = input.loginTaps + .asObservable() + .withLatestFrom(usernameAndPassword) + .flatMapLatest { pair -> Observable in + let (username, password) = pair + return self.dependencies.api.login(withUsername: username, password: password) + .trackActivity(loadingIndicator) + } + .map { $0 ? LoginResult.success : LoginResult.failure } + .asDriver(onErrorJustReturn: .failure) + .do(onNext: { [weak self] loginResult in + guard loginResult == LoginResult.success, + let strongSelf = self else { return } + strongSelf.dependencies.navigator.toMain() + }) + + return Output(enabled: enabled, + loading: loading, + result: result) + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailNavigator.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailNavigator.swift new file mode 100644 index 0000000..92f9dda --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailNavigator.swift @@ -0,0 +1,24 @@ +// +// MovieDetailNavigator.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 28/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import UIKit + +protocol MovieDetailNavigatable { + func goBack() +} + +final class MovieDetailNavigator: MovieDetailNavigatable { + private let navigationController: UINavigationController? + + init(navigationController: UINavigationController?) { + self.navigationController = navigationController + } + func goBack() { + navigationController?.popViewController(animated: true) + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailViewController.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailViewController.swift new file mode 100644 index 0000000..a1fc695 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailViewController.swift @@ -0,0 +1,60 @@ +// +// MovieDetailViewController.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 28/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import UIKit +import RxSwift +import RxCocoa +import Nuke + +final class MovieDetailViewController: UIViewController { + var viewModel: MovieDetailViewModel! + + @IBOutlet weak var headerView: MovieDetailHeaderView! + @IBOutlet weak var tipsView: MovieDetailTipsView! + @IBOutlet weak var posterImageView: GradientImageView! + @IBOutlet weak var backButton: UIButton! + + private let disposeBag = DisposeBag() + + override func viewDidLoad() { + super.viewDidLoad() + bindViewModel() + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.navigationController?.setNavigationBarHidden(true, animated: animated) + } + + override var preferredStatusBarStyle: UIStatusBarStyle { + return .lightContent + } + + private func bindViewModel() { + let input = MovieDetailViewModel.Input(ready: rx.viewWillAppear.map({ _ in }).asDriver(), + backTrigger: backButton.rx.tap.asDriver()) + + let output = viewModel.transform(input: input) + + output.data + .drive(onNext: { [weak self] data in + guard let data = data, + let strongSelf = self else { return } + strongSelf.headerView.configure(with: data) + strongSelf.tipsView.configure(with: data) + if let url = data.posterUrl { + Nuke.loadImage(with: URL(string: url)!, into: strongSelf.posterImageView) + } + }) + .disposed(by: disposeBag) + + output.back + .drive() + .disposed(by: disposeBag) + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailViewModel.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailViewModel.swift new file mode 100644 index 0000000..c65ce54 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailViewModel.swift @@ -0,0 +1,92 @@ +// +// MovieDetailViewModel.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 28/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import RxSwift +import RxCocoa + +final class MovieDetailViewModel: ViewModelType { + struct Input { + let ready: Driver + let backTrigger: Driver + } + + struct Output { + let data: Driver // nil means TMDB API errored out + let back: Driver + } + + struct Dependencies { + let id: Int + let api: TMDBApiProvider + let navigator: MovieDetailNavigatable + } + + private let dependencies: Dependencies + + init(dependencies: Dependencies) { + self.dependencies = dependencies + } + + func transform(input: MovieDetailViewModel.Input) -> MovieDetailViewModel.Output { + let data = input.ready + .asObservable() + .flatMap {_ in + self.dependencies.api.fetchMovieDetails(forMovieId: self.dependencies.id) + } + .map { movie -> MovieDetailData? in + guard let movie = movie else { return nil } + return MovieDetailData(movie: movie) + } + .asDriver(onErrorJustReturn: nil) + + let back = input.backTrigger + .do(onNext: { [weak self] _ in + guard let strongSelf = self else { return } + strongSelf.dependencies.navigator.goBack() + + }) + + return Output(data: data, back: back) + } +} + +struct MovieDetailData { + let title: String + let releaseDate: String + let overview: String + let genres: String + let runtime: String + let voteAverage: String + let posterUrl: String? + let voteCount: String + let status: String +} + +extension MovieDetailData { + init(movie: Movie) { + self.title = movie.title + self.releaseDate = movie.releaseDate + self.overview = movie.overview + self.genres = movie.genres + .flatMap { + $0.map { $0.name } + .prefix(2) + .joined(separator: ", ") + } ?? "" + self.runtime = movie.runtime + .flatMap { "\($0 / 60)hr \($0 % 60)min" } ?? "" + self.voteAverage = movie.voteAverage + .flatMap { String($0) } ?? "" + self.posterUrl = movie.posterUrl.flatMap { "http://image.tmdb.org/t/p/w780/" + $0 } + self.voteCount = movie.voteCount + .flatMap { String($0) } ?? "" + self.status = movie.status ?? "" + } +} + + diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/GradientImageView.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/GradientImageView.swift new file mode 100644 index 0000000..e4db376 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/GradientImageView.swift @@ -0,0 +1,32 @@ +// +// GradientImageView.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 30/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import UIKit + +final class GradientImageView: UIImageView { + override init(image: UIImage?) { + super.init(image: image) + setup() + } + + required init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + setup() + } + + private func setup() { + layer.backgroundColor = UIColor.black.cgColor + layer.opacity = 0.1 + + let gradient = CAGradientLayer() + gradient.frame = bounds + gradient.colors = [UIColor.clear.cgColor, UIColor(red: 18/255, green: 18/255, blue: 18/255, alpha: 1.0).cgColor, UIColor(red: 18/255, green: 18/255, blue: 18/255, alpha: 1.0).cgColor, UIColor.clear.cgColor] + gradient.locations = [0, 0.1, 0.9, 1] + layer.mask = gradient + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/MovieDetailHeaderView.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/MovieDetailHeaderView.swift new file mode 100644 index 0000000..3b3abeb --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/MovieDetailHeaderView.swift @@ -0,0 +1,63 @@ +// +// MovieDetailHeaderView.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 28/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import UIKit + +final class MovieDetailHeaderView: UIView { + @IBOutlet weak var titleLabel: UILabel! + @IBOutlet weak var releaseDateLabel: UILabel! + @IBOutlet weak var genresLabel: UILabel! + @IBOutlet weak var runtimeLabel: UILabel! + @IBOutlet weak var voteAverageLabel: UILabel! + @IBOutlet weak var overviewLabel: UILabel! + @IBOutlet var contentView: UIView! + + override init(frame: CGRect) { + super.init(frame: frame) + setup() + } + + required init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + setup() + } + + func configure(withTitle title: String, + releaseDate: String, + genres: String, + runtime: String, + voteAverage: String, + overview: String) { + titleLabel.text = title + releaseDateLabel.text = releaseDate + genresLabel.text = genres + runtimeLabel.text = runtime + voteAverageLabel.text = voteAverage + overviewLabel.text = overview + } + + private func setup() { + Bundle.main.loadNibNamed("MovieDetailHeaderView", owner: self, options: nil) + addSubview(contentView) + + contentView.frame = self.bounds + contentView.autoresizingMask = [.flexibleHeight, .flexibleWidth] + + } +} + +extension MovieDetailHeaderView { + func configure(with data: MovieDetailData) { + configure(withTitle: data.title, + releaseDate: data.releaseDate, + genres: data.genres, + runtime: data.runtime, + voteAverage: data.voteAverage, + overview: data.overview) + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/MovieDetailHeaderView.xib b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/MovieDetailHeaderView.xib new file mode 100644 index 0000000..c6bd4d7 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/MovieDetailHeaderView.xib @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/MovieDetailTipsView.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/MovieDetailTipsView.swift new file mode 100644 index 0000000..443085b --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/MovieDetailTipsView.swift @@ -0,0 +1,46 @@ +// +// MovieDetailTipsView.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 29/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import UIKit + +final class MovieDetailTipsView: UIView { + @IBOutlet weak var voteCountLabel: UILabel! + @IBOutlet weak var statusLabel: UILabel! + @IBOutlet var contentView: UIView! + override init(frame: CGRect) { + super.init(frame: frame) + setup() + } + + required init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + setup() + } + + func configure(withVoteCount voteCount: String, + status: String) { + self.voteCountLabel.text = voteCount + self.statusLabel.text = status + } + + private func setup() { + Bundle.main.loadNibNamed("MovieDetailTipsView", owner: self, options: nil) + addSubview(contentView) + + contentView.frame = self.bounds + contentView.autoresizingMask = [.flexibleHeight, .flexibleWidth] + + } +} + +extension MovieDetailTipsView { + func configure(with data: MovieDetailData) { + configure(withVoteCount: data.voteCount, + status: data.status) + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/MovieDetailTipsView.xib b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/MovieDetailTipsView.xib new file mode 100644 index 0000000..8341a47 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/MovieDetailTipsView.xib @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchDriver.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchDriver.swift new file mode 100644 index 0000000..5c7082d --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchDriver.swift @@ -0,0 +1,93 @@ +// +// SearchViewModel.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 29/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import RxSwift +import RxCocoa +import RxSwiftExt + +protocol SearchDriving { + var isSwitchHidden: Driver { get } + var isLoading: Driver { get } + var results: Driver<[SearchResultItem]> { get } + var didSelect: Driver { get } + + func search(_ query: String) + func selectCategory(_ category: SearchResultItemType) + func select(_ model: SearchResultItem) +} + +final class SearchDriver: SearchDriving { + private let activityIndicator = ActivityIndicator() + + private let isSwitchHiddenRelay = BehaviorRelay(value: nil) + private let resultsRelay = BehaviorRelay<[SearchResultItem]?>(value: nil) + private let didSelectRelay = BehaviorRelay(value: nil) + + private var searchBag = DisposeBag() + private var selectedCategory: SearchResultItemType = .movies + + private let api: TMDBApiProvider + + var isSwitchHidden: Driver { isSwitchHiddenRelay.unwrap().asDriver() } + var isLoading: Driver { activityIndicator.asDriver() } + var results: Driver<[SearchResultItem]> { resultsRelay.unwrap().asDriver() } + var didSelect: Driver { didSelectRelay.unwrap().asDriver() } + + init(api: TMDBApiProvider) { + self.api = api + } + + func search(_ query: String) { + searchBag = DisposeBag() + + let isValid = query.count >= 3 + + isSwitchHiddenRelay.accept(isValid) + + guard isValid else { + resultsRelay.accept([]) + return + } + + let searchResult: Observable<[SearchResultItem]> + + switch selectedCategory { + case .movies: + searchResult = api.searchMovies(forQuery: query) + .map({ $0 ?? [] }) + .mapMany(SearchResultItem.init) + + case .people: + searchResult = api.searchPeople(forQuery: query) + .map({ $0 ?? [] }) + .mapMany(SearchResultItem.init) + } + + searchResult + .trackActivity(activityIndicator) + .throttle(.milliseconds(500), scheduler: MainScheduler.instance) + .bind(onNext: resultsRelay.accept) + .disposed(by: searchBag) + } + + func selectCategory(_ category: SearchResultItemType) { + selectedCategory = category + } + + func select(_ model: SearchResultItem) { + didSelectRelay.accept(model) + } +} + +extension SearchDriver: StaticFactory { + enum Factory { + static var `default`: SearchDriving { + SearchDriver(api: TMDBApi.Factory.default) + } + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchResultItemViewModel.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchResultItemViewModel.swift new file mode 100644 index 0000000..9c32fd0 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchResultItemViewModel.swift @@ -0,0 +1,38 @@ +// +// SearchResultItemViewModel.swift +// tmdb-rx-driver +// +// Created by Dmytro Shulzhenko on 20.09.2020. +// + +import Foundation + +enum SearchResultItemType: Int { + case movies, people +} + +struct SearchResultItem { + let id: Int + let title: String + let subtitle: String + let imageUrl: String? + let type: SearchResultItemType +} + +extension SearchResultItem { + init(movie: Movie) { + self.id = movie.id + self.title = movie.title + self.subtitle = movie.overview + self.imageUrl = movie.posterUrl.flatMap { "http://image.tmdb.org/t/p/w185/" + $0 } + self.type = .movies + } + + init(person: Person) { + self.id = person.id + self.title = person.name + self.subtitle = person.knownForTitles?.first ?? " " + self.imageUrl = person.profileUrl.flatMap { "http://image.tmdb.org/t/p/w185/" + $0 } + self.type = .people + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchViewController.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchViewController.swift new file mode 100644 index 0000000..098faf4 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchViewController.swift @@ -0,0 +1,49 @@ +// +// SearchViewController.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 29/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import UIKit + +final class SearchViewController: DisposeViewController { + @IBOutlet weak var searchTextField: UITextField! + @IBOutlet weak var segmentedControl: UISegmentedControl! + @IBOutlet weak var tableView: UITableView! +} + +extension SearchViewController: StaticFactory { + enum Factory { + static var `default`: SearchViewController { + let vc = R.storyboard.main.searchViewController()! + let driver = SearchDriver.Factory.default + let stateBinder = SearchViewControllerStateBinder.Factory + .default(vc, driver: driver) + let actionBinder = SearchViewControllerActionBinder(viewController: vc, + driver: driver) + let navigationBinder = NavigationPushBinder.Factory + .push(viewController: vc, + driver: driver.didSelect, + factory: detailViewControllerFactory) + vc.bag.insert( + stateBinder, + actionBinder, + navigationBinder + ) + return vc + } + + private static func detailViewControllerFactory(_ item: SearchResultItem) -> UIViewController { + let movieDetailNavigator = MovieDetailNavigator(navigationController: nil) + let dependencies = MovieDetailViewModel.Dependencies(id: item.id, + api: TMDBApi.Factory.default, + navigator: movieDetailNavigator) + let movieDetailViewModel = MovieDetailViewModel(dependencies: dependencies) + let movieDetailViewController = UIStoryboard.main.movieDetailViewController + movieDetailViewController.viewModel = movieDetailViewModel + return movieDetailViewController + } + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchViewControllerActionBinder.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchViewControllerActionBinder.swift new file mode 100644 index 0000000..294067f --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchViewControllerActionBinder.swift @@ -0,0 +1,39 @@ +// +// SearchViewControllerActionBinder.swift +// tmdb-rx-driver +// +// Created by Dmytro Shulzhenko on 20.09.2020. +// + +import Foundation + +final class SearchViewControllerActionBinder: ViewControllerBinder { + unowned let viewController: SearchViewController + private let driver: SearchDriving + + init(viewController: SearchViewController, + driver: SearchDriving) { + self.viewController = viewController + self.driver = driver + + bind() + } + + func dispose() { } + + func bindLoaded() { + let query = viewController.searchTextField.rx.text.orEmpty + let didSelectedCategory = viewController.segmentedControl.rx.value + .compactMap(SearchResultItemType.init) + let didSelectItem = viewController.tableView.rx.modelSelected(SearchResultItem.self) + + viewController.bag.insert( + query + .bind(onNext: driver.search), + didSelectedCategory + .bind(onNext: driver.selectCategory), + didSelectItem + .bind(onNext: driver.select) + ) + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchViewControllerStateBinder.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchViewControllerStateBinder.swift new file mode 100644 index 0000000..be66658 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchViewControllerStateBinder.swift @@ -0,0 +1,87 @@ +// +// SearchViewControllerBinder.swift +// tmdb-rx-driver +// +// Created by Dmytro Shulzhenko on 20.09.2020. +// + +import Foundation +import RxSwift +import RxCocoa +import RxDataSources + +final class SearchViewControllerStateBinder: ViewControllerBinder { + typealias Item = SearchResultItem + + struct Section: SectionModelType { + let items: [Item] + + init(items: [Item]) { + self.items = items + } + + init(original: Self, items: [Item]) { + self.items = items + } + } + + unowned let viewController: SearchViewController + private let driver: SearchDriving + private let dataSource: RxTableViewSectionedReloadDataSource

+ private let cell = R.nib.searchCell + + init(viewController: SearchViewController, + driver: SearchDriving, + dataSource: RxTableViewSectionedReloadDataSource
) { + self.viewController = viewController + self.driver = driver + self.dataSource = dataSource + + bind() + } + + func dispose() { } + + func bindLoaded() { + viewController.statusBarStyle = .lightContent + viewController.tableView.register(cell) + + let section = driver.results.map(Section.init).map({ [$0] }) + + viewController.bag.insert( + viewController.rx.viewWillAppear + .bind(onNext: unowned(self, in: SearchViewControllerStateBinder.viewWillAppear)), + driver.isSwitchHidden + .drive(viewController.segmentedControl.rx.isHidden), + driver.isLoading + .drive(UIApplication.shared.rx.isNetworkActivityIndicatorVisible), + section.drive(viewController.tableView.rx.items(dataSource: dataSource)) + ) + } + + private func viewWillAppear(_ animated: Bool) { + viewController.navigationController?.setNavigationBarHidden(true, animated: animated) + } +} + +extension SearchViewControllerStateBinder: StaticFactory { + enum Factory { + static func `default`(_ viewController: SearchViewController, + driver: SearchDriving) -> SearchViewControllerStateBinder { + let dataSource = RxTableViewSectionedReloadDataSource(configureCell: cellFactory) + return SearchViewControllerStateBinder(viewController: viewController, + driver: driver, + dataSource: dataSource) + } + } + + private static func cellFactory(_: TableViewSectionedDataSource
, + tableView: UITableView, + indexPath: IndexPath, + item: Section.Item) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: R.reuseIdentifier.searchCell, + for: indexPath)! + cell.configure(withSearchResultItem: item) + return cell + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/Views/SearchCell.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/Views/SearchCell.swift new file mode 100644 index 0000000..8fe9193 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/Views/SearchCell.swift @@ -0,0 +1,38 @@ +// +// SearchCell.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 30/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import UIKit +import Nuke + +class SearchCell: UITableViewCell { + @IBOutlet weak var titleImageView: UIImageView! + @IBOutlet weak var titleLabel: UILabel! + @IBOutlet weak var subtitleLabel: UILabel! + + override func awakeFromNib() { + selectionStyle = .none + } + + func configure(withImageUrl url: String?, + title: String, + subtitle: String) { + if let url = url { + Nuke.loadImage(with: URL(string: url)!, into: titleImageView) + } + titleLabel.text = title + subtitleLabel.text = subtitle + } +} + +extension SearchCell { + func configure(withSearchResultItem item: SearchResultItem) { + configure(withImageUrl: item.imageUrl, + title: item.title, + subtitle: item.subtitle) + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/Views/SearchCell.xib b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/Views/SearchCell.xib new file mode 100644 index 0000000..7255d44 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/Views/SearchCell.xib @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tmdb-rx-driver/tmdb-rx-driver/Storyboard/Base.lproj/Main.storyboard b/tmdb-rx-driver/tmdb-rx-driver/Storyboard/Base.lproj/Main.storyboard new file mode 100644 index 0000000..38a20c7 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Storyboard/Base.lproj/Main.storyboard @@ -0,0 +1,358 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Welcome +Back. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/ActivityIndicator.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/ActivityIndicator.swift new file mode 100644 index 0000000..e9638bd --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/ActivityIndicator.swift @@ -0,0 +1,76 @@ +// +// ActivityIndicator.swift +// RxExample +// +// Created by Krunoslav Zaher on 10/18/15. +// Copyright © 2015 Krunoslav Zaher. All rights reserved. +// +import RxSwift +import RxCocoa + +private struct ActivityToken : ObservableConvertibleType, Disposable { + private let _source: Observable + private let _dispose: Cancelable + + init(source: Observable, disposeAction: @escaping () -> ()) { + _source = source + _dispose = Disposables.create(with: disposeAction) + } + + func dispose() { + _dispose.dispose() + } + + func asObservable() -> Observable { + return _source + } +} + +/** + Enables monitoring of sequence computation. + If there is at least one sequence computation in progress, `true` will be sent. + When all activities complete `false` will be sent. + */ +public class ActivityIndicator : SharedSequenceConvertibleType { + public typealias Element = Bool + public typealias SharingStrategy = DriverSharingStrategy + + private let _lock = NSRecursiveLock() + private let _relay = BehaviorRelay(value: 0) + private let _loading: SharedSequence + + public init() { + _loading = _relay.asDriver() + .map { $0 > 0 } + .distinctUntilChanged() + } + + fileprivate func trackActivityOfObservable(_ source: O) -> Observable { + return Observable.using({ () -> ActivityToken in + self.increment() + return ActivityToken(source: source.asObservable(), disposeAction: self.decrement) + }) { $0.asObservable() } + } + + private func increment() { + _lock.lock() + _relay.accept(_relay.value + 1) + _lock.unlock() + } + + private func decrement() { + _lock.lock() + _relay.accept(_relay.value - 1) + _lock.unlock() + } + + public func asSharedSequence() -> SharedSequence { + _loading + } +} + +extension ObservableConvertibleType { + public func trackActivity(_ activityIndicator: ActivityIndicator) -> Observable { + activityIndicator.trackActivityOfObservable(self) + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/DisposeViewController.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/DisposeViewController.swift new file mode 100644 index 0000000..de78c19 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/DisposeViewController.swift @@ -0,0 +1,56 @@ +// +// DisposeViewController.swift +// Headway +// +// Created by Eugene Morozov on 11/5/19. +// Copyright © 2019 Headway. All rights reserved. +// + +import UIKit +import RxSwift + +protocol DisposeContainer { + var bag: DisposeBag { get } +} + +class DisposeViewController: UIViewController, DisposeContainer { + let bag = DisposeBag() + + static var defaultStatusBarStyle: UIStatusBarStyle { + if #available(iOS 13.0, *) { + return .darkContent + } else { + return .default + } + } + + var statusBarStyle = defaultStatusBarStyle { + didSet { + setNeedsStatusBarAppearanceUpdate() + } + } + var statusBarUpdateAnimation: UIStatusBarAnimation = .none { + didSet { + setNeedsStatusBarAppearanceUpdate() + } + } + var isStatusBarHidden: Bool = false { + didSet { + setNeedsStatusBarAppearanceUpdate() + } + } + + // MARK: - Override + + override var prefersStatusBarHidden: Bool { + isStatusBarHidden + } + + override var preferredStatusBarStyle: UIStatusBarStyle { + statusBarStyle + } + + override var preferredStatusBarUpdateAnimation: UIStatusBarAnimation { + statusBarUpdateAnimation + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/NavigationBinder.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/NavigationBinder.swift new file mode 100644 index 0000000..c60f775 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/NavigationBinder.swift @@ -0,0 +1,107 @@ +// +// NavigationBinder.swift +// Headway +// +// Created by Dmytro Shulzhenko on 18.06.2020. +// Copyright © 2020 Headway. All rights reserved. +// + +import UIKit +import RxSwift +import RxCocoa + +final class NavigationBinder: ViewControllerBinder + where Transition: Transitioning, + Transition.Prop == Prop, + ViewController: UIViewController, +ViewController: DisposeContainer { + + unowned let viewController: ViewController + private let transition: Transition + private let driver: Driver + + init(viewController: ViewController, + transition: Transition, + driver: Driver) { + self.viewController = viewController + self.transition = transition + self.driver = driver + + bind() + } + + func dispose() { } + + func bindLoaded() { + driver + .drive(onNext: transition.perform) + .disposed(by: viewController.bag) + } +} + +typealias NavigationPushBinder = NavigationBinder, ViewController> where ViewController: UIViewController, ViewController: DisposeContainer + +extension NavigationBinder: StaticFactory { + typealias ViewControllerFactory = (Prop) -> UIViewController + + enum Factory { + static func present(viewController: ViewController, + driver: Driver, + animated: Bool = true, + sourceViewFactory: (() -> UIView)? = nil, + factory: @escaping ViewControllerFactory) -> NavigationBinder, ViewController> { + let transition = PresentTransition(isAnimated: animated, + viewController: viewController, + sourceViewFactory: sourceViewFactory, + presentedFactory: factory) + return NavigationBinder, ViewController>(viewController: viewController, + transition: transition, + driver: driver) + } + + static func push(viewController: ViewController, + driver: Driver, + animated: Bool = true, + factory: @escaping ViewControllerFactory) -> NavigationPushBinder { + let transition = NavigationPushTransition(isAnimated: animated, + viewController: viewController, + presentedFactory: factory) + return NavigationBinder, ViewController>(viewController: viewController, + transition: transition, + driver: driver) + } +// +// static func bindPush(on container: UINavigationController & DisposeContainer, +// driver: Driver, +// animated: Bool = true, +// factory: @escaping ViewControllerFactory) { +// let transition = NavigationPushTransition( +// isAnimated: animated, +// navigationController: container, +// presentedFactory: factory +// ) +// bind(driver: driver, transition: transition, bag: container.bag) +// container.bag.insert(transition) +// } +// +// static func bindDismiss(on container: UIViewController & DisposeContainer, +// driver: Driver, +// animated: Bool = true) { +// let transition = DismissTransition(isAnimated: animated, +// viewController: container) +// bind(driver: driver, transition: transition, bag: container.bag) +// container.bag.insert(transition) +// } +// +// static func bindPop(on container: UINavigationController & DisposeContainer, +// driver: Driver, +// animated: Bool = true) { +// let transition = NavigationPopTransition( +// isAnimated: animated, +// navigationController: container +// ) +// bind(driver: driver, transition: transition, bag: container.bag) +// container.bag.insert(transition) +// } + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/Transitioning.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/Transitioning.swift new file mode 100644 index 0000000..7442ba8 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/Transitioning.swift @@ -0,0 +1,93 @@ +// +// Transitioning.swift +// Headway +// +// Created by Dmytro Shulzhenko on 18.06.2020. +// Copyright © 2020 Headway. All rights reserved. +// + +import UIKit +import RxSwift + +protocol Transitioning { + associatedtype Prop + func perform(prop: Prop) +} + +final class PresentTransition: Disposable, Transitioning { + private let isAnimated: Bool + private unowned let viewController: UIViewController + private let sourceViewFactory: (() -> UIView)? + private let presentedFactory: (Prop) -> UIViewController + + init(isAnimated: Bool, + viewController: UIViewController, + sourceViewFactory: (() -> UIView)?, + presentedFactory: @escaping (Prop) -> UIViewController) { + self.isAnimated = isAnimated + self.viewController = viewController + self.sourceViewFactory = sourceViewFactory + self.presentedFactory = presentedFactory + } + + func dispose() { } + + func perform(prop: Prop) { + let presented = presentedFactory(prop) + presented.popoverPresentationController?.sourceView = sourceViewFactory?() + viewController.present(presented, animated: isAnimated) + } +} + +final class DismissTransition: Disposable, Transitioning { + private let isAnimated: Bool + private unowned let viewController: UIViewController + + init(isAnimated: Bool, viewController: UIViewController) { + self.isAnimated = isAnimated + self.viewController = viewController + } + + func dispose() { } + + func perform(prop: Void) { + viewController.dismiss(animated: isAnimated) + } +} + +final class NavigationPushTransition: Disposable, Transitioning { + private let isAnimated: Bool + private unowned let viewController: UIViewController + private let presentedFactory: (Prop) -> UIViewController + + init(isAnimated: Bool, + viewController: UIViewController, + presentedFactory: @escaping (Prop) -> UIViewController) { + self.isAnimated = isAnimated + self.viewController = viewController + self.presentedFactory = presentedFactory + } + + func dispose() { } + + func perform(prop: Prop) { + viewController.navigationController? + .pushViewController(presentedFactory(prop), animated: isAnimated) + } +} + +final class NavigationPopTransition: Disposable, Transitioning { + private let isAnimated: Bool + private unowned let viewController: UIViewController + + init(isAnimated: Bool, viewController: UIViewController) { + self.isAnimated = isAnimated + self.viewController = viewController + } + + func dispose() { } + + func perform(prop: Void) { + viewController.navigationController?.popViewController(animated: true) + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/ViewControllerBinder.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/ViewControllerBinder.swift new file mode 100644 index 0000000..a11b599 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/ViewControllerBinder.swift @@ -0,0 +1,46 @@ +// +// ViewBinder.swift +// Headway +// +// Created by Dmytro Shulzhenko on 5/31/19. +// Copyright © 2019 Dmitriy. All rights reserved. +// + +import Foundation +import RxSwift +import RxViewController + +protocol Binding { + func bind() +} + +// MARK: - ViewControllerBinder + +// swiftlint:disable view_binding_before_did_load + +protocol ViewControllerBinder: Disposable { + associatedtype DisposeViewControllerContainer: UIViewController, DisposeContainer + + var viewController: DisposeViewControllerContainer { get } + + func bindLoaded() +} + +extension ViewControllerBinder { + var bag: DisposeBag { + viewController.bag + } +} + +extension ViewControllerBinder where Self: AnyObject { + func bind() { + viewController.rx.viewDidLoad + .subscribe(onNext: unowned(self, in: Self.bindLoaded)) + .disposed(by: viewController.bag) + } + + var binded: Self { + bind() + return self + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/Closure/Closure.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/Closure/Closure.swift new file mode 100644 index 0000000..01e8179 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/Closure/Closure.swift @@ -0,0 +1,35 @@ +// +// Closure.swift +// Headway +// +// Created by Dmytro Shulzhenko on 3/6/19. +// Copyright © 2019 Dmitriy. All rights reserved. +// + +import Foundation + +struct Closure { + let closure: (Inputs) -> Outputs + + init(_ closure: @escaping (Inputs) -> Outputs) { + self.closure = closure + } +} + +extension Closure { + func execute(_ inputs: Inputs) -> Outputs { + return closure(inputs) + } +} + +extension Closure { + func map(_ transform: @escaping (T) -> Inputs) -> Closure { + return Closure { self.execute(transform($0)) } + } +} + +extension Closure { + func filter(_ predicate: @escaping (Inputs) -> Bool) -> Closure { + return Closure { predicate($0) ? self.execute($0) : nil } + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/Closure/RawClosure.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/Closure/RawClosure.swift new file mode 100644 index 0000000..df18a8a --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/Closure/RawClosure.swift @@ -0,0 +1,30 @@ +// +// RawClosure.swift +// Headway +// +// Created by Dmytro Shulzhenko on 3/21/19. +// Copyright © 2019 Dmitriy. All rights reserved. +// + +import Foundation + +func + (lhs: @escaping (T) -> Void, rhs: @escaping (T) -> Void) -> (T) -> Void { + return { prop in + lhs(prop) + rhs(prop) + } +} + +func + (lhs: @escaping () -> Void, rhs: @escaping () -> Void) -> () -> Void { + return { + lhs() + rhs() + } +} + +func + (lhs: @escaping (A, B) -> Void, rhs: @escaping () -> Void) -> (A, B) -> Void { + return { + lhs($0, $1) + rhs() + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/Closure/Set.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/Closure/Set.swift new file mode 100644 index 0000000..4b58fd8 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/Closure/Set.swift @@ -0,0 +1,141 @@ +// +// Set.swift +// Headway +// +// Created by Dmytro Shulzhenko on 3/6/19. +// Copyright © 2019 Dmitriy. All rights reserved. +// + +import Foundation + +// MARK: Set Closure inputs to Keypath + +func set(weak element: Element, + to path: ReferenceWritableKeyPath) + -> Closure { + return Closure { [weak element] in element?[keyPath: path] = $0 } +} + +func set(unowned element: Element, + to path: ReferenceWritableKeyPath) + -> Closure { + return Closure { [unowned element] in element[keyPath: path] = $0 } +} + +func set(unowned element: Element, + to path: ReferenceWritableKeyPath) + -> (Inputs) -> Void { + return { [unowned element] in element[keyPath: path] = $0 } +} + +func set(capture element: Element, + to path: ReferenceWritableKeyPath) + -> Closure { + return Closure { element[keyPath: path] = $0 } +} + +// MARK: Optional value in setter + +func set(weak element: Element, + to path: ReferenceWritableKeyPath) + -> Closure { + return Closure { [weak element] in element?[keyPath: path] = $0 } +} + +func set(unowned element: Element, + to path: ReferenceWritableKeyPath) + -> Closure { + return Closure { [unowned element] in element[keyPath: path] = $0 } +} + +func set(unowned element: Element, + to path: ReferenceWritableKeyPath) + -> (Inputs) -> Void { + return { [unowned element] in element[keyPath: path] = $0 } +} + +func set(capture element: Element, + to path: ReferenceWritableKeyPath) + -> Closure { + return Closure { element[keyPath: path] = $0 } +} + +// MARK: Optional element + +func set(weak element: Element?, + to path: ReferenceWritableKeyPath) + -> Closure { + return Closure { [weak element] in element?[keyPath: path] = $0 } +} + +func set(unowned element: Element?, + to path: ReferenceWritableKeyPath) + -> Closure { + guard let element = element else { return Closure { _ in } } + return Closure { [unowned element] in element[keyPath: path] = $0 } +} + +func set(capture element: Element?, + to path: ReferenceWritableKeyPath) + -> Closure { + guard let element = element else { return Closure { _ in } } + return Closure { element[keyPath: path] = $0 } +} + +// MARK: Optional element and value + +func set(weak element: Element?, + to path: ReferenceWritableKeyPath) + -> Closure { + return Closure { [weak element] in element?[keyPath: path] = $0 } +} + +func set(unowned element: Element?, + to path: ReferenceWritableKeyPath) + -> Closure { + guard let element = element else { return Closure { _ in } } + return Closure { [unowned element] in element[keyPath: path] = $0 } +} + +func set(capture element: Element?, + to path: ReferenceWritableKeyPath) + -> Closure { + guard let element = element else { return Closure { _ in } } + return Closure { element[keyPath: path] = $0 } +} + +// MARK: Set on queue + +func setOnMain + (unowned element: Element, to path: ReferenceWritableKeyPath) + -> Closure { + return setOn(queue: .main, + check: !Thread.isMainThread, + unowned: element, + to: path) +} + +func setOn(queue: DispatchQueue, + check: @autoclosure @escaping () -> Bool = true, + unowned element: Element, + to path: ReferenceWritableKeyPath) + -> Closure { + return Closure { [unowned element] value in + if check() { + queue.async { + element[keyPath: path] = value + } + } else { + element[keyPath: path] = value + } + } +} + +// + +func get( + unowned element: Element, + from path: KeyPath +) -> () -> Outputs { + return { [unowned element] in element[keyPath: path] } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/Closure/Unown.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/Closure/Unown.swift new file mode 100644 index 0000000..853c28a --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/Closure/Unown.swift @@ -0,0 +1,273 @@ +// http://sveinhal.github.io/2016/03/16/retain-cycles-function-references/ + +//swiftlint:disable identifier_name +import Foundation + +func unowned(_ type: Type, + in block: @escaping (Type) -> R) -> () -> R { + return { [unowned type] in block(type) } +} + +func unowned(_ type: Type, + in block: @escaping (Type) throws -> R) -> () throws -> R { + return { [unowned type] in try block(type) } +} + +/// + +func unowned(_ type: Type, + in block: @escaping (Type) -> (() -> Void), + file: StaticString = #file, + line: Int = #line) + -> () -> Void { + return { [weak type] in + guard let strong = type else { + fatalError("\(file), \(line), \(String.init(describing: Type.self))") + } + let instanceFunction = block(strong) + return instanceFunction() + } +} + +func unowned(_ type: Type, + in block: @escaping (Type) -> ((Arg) -> ReturnType)) + -> (Arg) -> ReturnType { + return { [weak type] arg in + guard let type = type else { + fatalError("\(String(describing: Type.self))") + } + let instanceFunction = block(type) + return instanceFunction(arg) + } +} + +func unowned(_ type: Type, + in block: @escaping (Type) -> ((Arg1, Arg2) -> ReturnType)) + -> (Arg1, Arg2) -> ReturnType { + return { [unowned type] arg1, arg2 in + let instanceFunction = block(type) + return instanceFunction(arg1, arg2) + } +} + +func unowned(_ type: Type, + in block: @escaping (Type) -> ((Arg1, Arg2, Arg3) -> ReturnType)) + -> (Arg1, Arg2, Arg3) -> ReturnType { + return { [unowned type] arg1, arg2, arg3 in + let instanceFunction = block(type) + return instanceFunction(arg1, arg2, arg3) + } +} + +func unowned(_ type: Type, + in block: @escaping (Type) -> ((Arg1, Arg2, Arg3) throws -> ReturnType)) + -> (Arg1, Arg2, Arg3) throws -> ReturnType { + return { [unowned type] arg1, arg2, arg3 in + let instanceFunction = block(type) + return try instanceFunction(arg1, arg2, arg3) + } +} + +func unowned(_ type: Type, + in block: @escaping (Type) -> ((Arg1, Arg2, Arg3, Arg4) -> ReturnType)) + -> (Arg1, Arg2, Arg3, Arg4) -> ReturnType { + return { [unowned type] arg1, arg2, arg3, arg4 in + let instanceFunction = block(type) + return instanceFunction(arg1, arg2, arg3, arg4) + } +} + +func unowned(_ type: Type, + in block: @escaping (Type) -> ((Arg1, Arg2, Arg3, Arg4, Arg5) -> ReturnType)) + -> (Arg1, Arg2, Arg3, Arg4, Arg5) -> ReturnType { + return { [unowned type] arg1, arg2, arg3, arg4, arg5 in + let instanceFunction = block(type) + return instanceFunction(arg1, arg2, arg3, arg4, arg5) + } +} + +func unowned(_ type: Type, + in block: @escaping (Type) -> ((A, B, C, D, E, F) -> ReturnType)) + -> (A, B, C, D, E, F) -> ReturnType { + return { [unowned type] a, b, c, d, e, f in + let instanceFunction = block(type) + return instanceFunction(a, b, c, d, e, f) + } +} + +// MARK: Weak + +// Void as return + +// Type + +func weak(_ type: Type?, + in block: @escaping (Type) -> Void) -> () -> Void { + return { + guard let strong = type else { + return + } + block(strong) + } +} + +func weak(_ type: Type?, + in block: @escaping (Type, Arg) -> Void) -> (Arg) -> Void { + return { arg in + guard let strong = type else { + return + } + block(strong, arg) + } +} + +func weak(_ type: Type?, + in block: @escaping (Type, Arg1, Arg2) -> Void) -> (Arg1, Arg2) -> Void { + return { arg1, arg2 in + guard let strong = type else { + return + } + block(strong, arg1, arg2) + } +} + +func weak(_ type: Type?, + in block: @escaping (Type, Arg1, Arg2, Arg3) -> Void) -> (Arg1, Arg2, Arg3) -> Void { + return { arg1, arg2, arg3 in + guard let strong = type else { + return + } + block(strong, arg1, arg2, arg3) + } +} + +func weak(_ type: Type?, + in block: @escaping (Type, Arg1, Arg2, Arg3, Arg4) -> Void) -> (Arg1, Arg2, Arg3, Arg4) -> Void { + return { arg1, arg2, arg3, arg4 in + guard let strong = type else { + return + } + block(strong, arg1, arg2, arg3, arg4) + } +} + +// Method + +func weak(_ type: Type?, + in block: @escaping (Type) -> (() -> Void)) + -> () -> Void { + return { [weak type] in + guard let type = type else { + log(.fatal("\(String(describing: Type.self))")) + return + } + let instanceFunction = block(type) + return instanceFunction() + } +} + +func weak(_ type: Type?, + in block: @escaping (Type) -> ((Arg) -> Void)) + -> (Arg) -> Void { + return { [weak type] arg in + guard let type = type else { + log(.fatal("\(String(describing: Type.self))")) + return + } + let instanceFunction = block(type) + return instanceFunction(arg) + } +} + +func weak(_ type: Type?, + in block: @escaping (Type) -> ((Arg1, Arg2) -> Void)) + -> (Arg1, Arg2) -> Void { + return { [weak type] arg1, arg2 in + guard let type = type else { + log(.fatal("\(String(describing: Type.self))")) + return + } + let instanceFunction = block(type) + return instanceFunction(arg1, arg2) + } +} + +func weak(_ type: Type?, + in block: @escaping (Type) -> ((Arg1, Arg2, Arg3) -> Void)) + -> (Arg1, Arg2, Arg3) -> Void { + return { [weak type] arg1, arg2, arg3 in + guard let type = type else { + log(.fatal("\(String(describing: Type.self))")) + return + } + let instanceFunction = block(type) + return instanceFunction(arg1, arg2, arg3) + } +} + +// + +func weak(_ type: Type?, + in block: @escaping (Type) -> ((Arg) -> ReturnType?)) + -> (Arg) -> ReturnType? { + return { [weak type] arg in + guard let type = type else { + log(.fatal("\(String(describing: Type.self))")) + return nil + } + let instanceFunction = block(type) + return instanceFunction(arg) + } +} + +func weak(_ type: Type?, + in block: @escaping (Type) -> ((Arg1, Arg2) -> ReturnType?)) + -> (Arg1, Arg2) -> ReturnType? { + return { [weak type] arg1, arg2 in + guard let type = type else { + log(.fatal("\(String(describing: Type.self))")) + return nil + } + let instanceFunction = block(type) + return instanceFunction(arg1, arg2) + } +} + +func weak(_ type: Type?, + in block: @escaping (Type) -> ((Arg1, Arg2, Arg3) -> ReturnType?)) + -> (Arg1, Arg2, Arg3) -> ReturnType? { + return { [weak type] arg1, arg2, arg3 in + guard let type = type else { + log(.fatal("\(String(describing: Type.self))")) + return nil + } + let instanceFunction = block(type) + return instanceFunction(arg1, arg2, arg3) + } +} + +func weak(_ type: Type?, + in block: @escaping (Type) -> ((Arg1, Arg2, Arg3, Arg4) -> ReturnType?)) + -> (Arg1, Arg2, Arg3, Arg4) -> ReturnType? { + return { [weak type] arg1, arg2, arg3, arg4 in + guard let type = type else { + log(.fatal("\(String(describing: Type.self))")) + return nil + } + let instanceFunction = block(type) + return instanceFunction(arg1, arg2, arg3, arg4) + } +} + +func weak(_ type: Type?, + in block: @escaping (Type) -> ((Arg1, Arg2, Arg3, Arg4, Arg5) -> ReturnType?)) + -> (Arg1, Arg2, Arg3, Arg4, Arg5) -> ReturnType? { + return { [weak type] arg1, arg2, arg3, arg4, arg5 in + guard let type = type else { + log(.fatal("\(String(describing: Type.self))")) + return nil + } + let instanceFunction = block(type) + return instanceFunction(arg1, arg2, arg3, arg4, arg5) + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/DefaultInitializable/DefaultInitializable.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/DefaultInitializable/DefaultInitializable.swift new file mode 100644 index 0000000..95b32a2 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/DefaultInitializable/DefaultInitializable.swift @@ -0,0 +1,27 @@ +// +// DefaultInitializable.swift +// Headway +// +// Created by Dmitriy on 2/19/19. +// Copyright © 2019 Dmitriy. All rights reserved. +// + +import Foundation + +protocol DefaultInitializable { + associatedtype ReturnType + static var `default`: ReturnType { get } +} + +protocol Mockable { + associatedtype MockReturnType + static var mock: MockReturnType { get } +} + +protocol StaticFactory { + associatedtype Factory +} + +extension StaticFactory { + static var factory: Factory.Type { return Factory.self } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/Log/Level.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/Log/Level.swift new file mode 100644 index 0000000..2de4917 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/Log/Level.swift @@ -0,0 +1,25 @@ +// +// Level.swift +// Log +// +// Created by Dmytro Shulzhenko on 4/25/19. +// Copyright © 2019 Dmytro Shulzhenko. All rights reserved. +// + +import Foundation + +struct Level: Equatable { + let description: String + + init(description: String) { + self.description = description + } +} + +extension Level { + static var debug: Level { return Level(description: "♡ DEBUG:") } + static var info: Level { return Level(description: "💚 INFO:") } + static var warning: Level { return Level(description: "💛 WARNING:") } + static var error: Level { return Level(description: "💔 ERROR:") } + static var fatal: Level { return Level(description: "‼️ FATAL ‼️:") } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/Log/Log.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/Log/Log.swift new file mode 100644 index 0000000..ea4bc96 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/Log/Log.swift @@ -0,0 +1,11 @@ +// +// Log.swift +// Headway +// +// Created by Dmitriy on 2/19/19. +// Copyright © 2019 Dmitriy. All rights reserved. +// + +import Foundation + +var log = Logging.console.log diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/Log/Logging.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/Log/Logging.swift new file mode 100644 index 0000000..e467e64 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/Log/Logging.swift @@ -0,0 +1,45 @@ +// +// Logging.swift +// Log +// +// Created by Dmytro Shulzhenko on 4/25/19. +// Copyright © 2019 Dmytro Shulzhenko. All rights reserved. +// + +import Foundation + +struct Logging { + let log: (Params) -> Void +} + +extension Logging { + static let formatFilename: (StaticString) -> String = { + String($0).components(separatedBy: "/").last ?? "" + } + + static var console: Logging { + return Logging { params in + #if DEBUG + print( + Date(), + params.level.description, + formatFilename(params.filename), + params.function, + params.line, + "\(params.message())" + ) + if params.level == Level.fatal { + assertionFailure("\(params.filename) \(params.function) \(params.line) \(params.message())") + } + #endif + } + } +} + +extension String { + init(_ staticString: StaticString) { + self = staticString.withUTF8Buffer { + String(decoding: $0, as: UTF8.self) + } + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/Log/Params.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/Log/Params.swift new file mode 100644 index 0000000..d026e12 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/Log/Params.swift @@ -0,0 +1,86 @@ +// +// Params.swift +// Log +// +// Created by Dmytro Shulzhenko on 4/25/19. +// Copyright © 2019 Dmytro Shulzhenko. All rights reserved. +// + +import Foundation + +struct Params { + let level: Level + let filename: StaticString + let function: StaticString + let line: UInt + let message: () -> Any + + init(level: Level, + filename: StaticString, + function: StaticString, + line: UInt, + message: @escaping () -> Any) { + self.level = level + self.filename = filename + self.function = function + self.line = line + self.message = message + } +} + +extension Params { + static func debug(_ message: @escaping @autoclosure () -> Any = "", + _ file: StaticString = #file, + _ function: StaticString = #function, + _ line: UInt = #line) -> Params { + return Params(level: .debug, + filename: file, + function: function, + line: line, + message: message) + } + + static func info(_ message: @escaping @autoclosure () -> Any = "", + _ file: StaticString = #file, + _ function: StaticString = #function, + _ line: UInt = #line) -> Params { + return Params(level: .info, + filename: file, + function: function, + line: line, + message: message) + } + + static func warning(_ message: @escaping @autoclosure () -> Any = "", + _ file: StaticString = #file, + _ function: StaticString = #function, + _ line: UInt = #line) -> Params { + return Params(level: .warning, + filename: file, + function: function, + line: line, + message: message) + } + + static func error(_ message: @escaping @autoclosure () -> Any = "", + _ file: StaticString = #file, + _ function: StaticString = #function, + _ line: UInt = #line) -> Params { + return Params(level: .error, + filename: file, + function: function, + line: line, + message: message) + } + + static func fatal(_ message: @escaping @autoclosure () -> Any = "", + _ file: StaticString = #file, + _ function: StaticString = #function, + _ line: UInt = #line) -> Params { + return Params(level: .fatal, + filename: file, + function: function, + line: line, + message: message) + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Bool.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Bool.swift new file mode 100644 index 0000000..f817063 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Bool.swift @@ -0,0 +1,31 @@ +// +// Bool.swift +// RxUtils +// +// Created by Dmytro Shulzhenko on 4/29/19. +// Copyright © 2019 Dmytro Shulzhenko. All rights reserved. +// + +import Foundation +import RxSwift +import RxCocoa + +extension Observable where Element == Bool { + func whenTrue() -> Observable { + return filter { $0 } + } + + func whenFalse() -> Observable { + return filter { !$0 } + } +} + +extension SharedSequence where Element == Bool { + func whenTrue() -> SharedSequence { + return filter { $0 } + } + + func whenFalse() -> SharedSequence { + return filter { !$0 } + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Callable.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Callable.swift new file mode 100644 index 0000000..c60bd68 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Callable.swift @@ -0,0 +1,23 @@ +// +// Calable.swift +// RxUtils +// +// Created by Dmytro Shulzhenko on 4/29/19. +// Copyright © 2019 Dmytro Shulzhenko. All rights reserved. +// + +import RxSwift + +extension Completable { + static func fromCallable(_ execute: @escaping (@escaping (Error?) -> Void) -> Void) -> Completable { + return Completable + .create { observer in + execute { error in + error.flatMap { observer(.error($0)) } + observer(.completed) + } + + return Disposables.create() + } + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Driver.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Driver.swift new file mode 100644 index 0000000..0ff9bd1 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Driver.swift @@ -0,0 +1,38 @@ +// +// Driver.swift +// RxUtils +// +// Created by Dmytro Shulzhenko on 4/29/19. +// Copyright © 2019 Dmytro Shulzhenko. All rights reserved. +// + +import Foundation +import RxSwift +import RxCocoa + +extension ObservableConvertibleType { + func asDriver(_ file: StaticString = #file, + _ function: StaticString = #function, + _ line: UInt = #line, + onError: ((Error) -> Void)? = nil) -> Driver { + asObservable() + .do(onError: { error in + onError?(error) + log(.fatal(error, file, function, line)) + }) + .asDriver(onErrorRecover: { _ in .never() }) + } + + func asDriver(onError `default`: @escaping @autoclosure () -> Element) -> Driver { + return Observable.create { observer in + self.asObservable() + .subscribe(onNext: observer.onNext, + onError: { error in + log(.error(error)) + observer.onNext(`default`()) + }, + onCompleted: observer.onCompleted) + } + .asDriver(onErrorRecover: { _ in .never() }) + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Just.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Just.swift new file mode 100644 index 0000000..fad7943 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Just.swift @@ -0,0 +1,47 @@ +// +// Just.swift +// RxUtils +// +// Created by Dmytro Shulzhenko on 4/29/19. +// Copyright © 2019 Dmytro Shulzhenko. All rights reserved. +// + +import Foundation +import RxSwift +import RxCocoa + +extension Completable { + static func just(block: @escaping () throws -> Void) -> Completable { + return Completable.create { observer in + do { + try block() + observer(.completed) + } catch let error { + observer(.error(error)) + } + + return Disposables.create() + } + } +} + +extension Single { + static func just(block: @escaping () throws -> Element) -> Single { + return Single.create { observer in + do { + let element = try block() + observer(.success(element)) + } catch let error { + observer(.error(error)) + } + + return Disposables.create() + } + } +} + +extension PrimitiveSequenceType { + static var completed: Completable { + return Completable.just { } + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Latest.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Latest.swift new file mode 100644 index 0000000..6f1f9a4 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Latest.swift @@ -0,0 +1,40 @@ +// +// Latest.swift +// RxUtils +// +// Created by Dmytro Shulzhenko on 4/29/19. +// Copyright © 2019 Dmytro Shulzhenko. All rights reserved. +// + +import Foundation +import RxSwift + +extension ObservableType { + var latestIfReplayed: Element? { + var element: Element? + subscribe(onNext: { element = $0 }).dispose() + return element + } + + var await: Element { + return latestIfReplayed ?? await(for: { }) + } + + func await(for trigger: () -> Void) -> Element { + let group = DispatchGroup() + + var value: Element! + var disposable: Disposable! + + group.enter() + disposable = subscribe(onNext: { newValue in + value = newValue + disposable.dispose() + group.leave() + }) + trigger() + group.wait() + + return value + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Loading.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Loading.swift new file mode 100644 index 0000000..650ee77 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Loading.swift @@ -0,0 +1,27 @@ +// +// Loading.swift +// RxUtils +// +// Created by Dmytro Shulzhenko on 4/29/19. +// Copyright © 2019 Dmytro Shulzhenko. All rights reserved. +// + +import Foundation +import RxSwift + +extension Observable { + func processLoading(with observer: AnyObserver) -> Observable { + return `do`(onNext: { _ in observer.onNext(false) }, + onError: { _ in observer.onNext(false) }, + onCompleted: { observer.onNext(false) }, + onSubscribe: { observer.onNext(true) }) + } +} + +extension PrimitiveSequence where Trait == CompletableTrait, Element == Swift.Never { + func processLoading(with observer: AnyObserver) -> Completable { + return `do`(onError: { _ in observer.onNext(false) }, + onCompleted: { observer.onNext(false) }, + onSubscribe: { observer.onNext(true) }) + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/NSObject+Disposable.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/NSObject+Disposable.swift new file mode 100644 index 0000000..5fa6993 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/NSObject+Disposable.swift @@ -0,0 +1,13 @@ +// +// NSObject+Disposable.swift +// Headway +// +// Created by Dmytro Shulzhenko on 26.11.2019. +// Copyright © 2019 Headway. All rights reserved. +// + +import RxSwift + +@objc extension NSObject: Disposable { + public func dispose() { } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Next.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Next.swift new file mode 100644 index 0000000..8a2fc93 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Next.swift @@ -0,0 +1,16 @@ +// +// Next.swift +// RxUtils +// +// Created by Dmytro Shulzhenko on 4/29/19. +// Copyright © 2019 Dmytro Shulzhenko. All rights reserved. +// + +import Foundation +import RxSwift + +extension ObserverType where Element == Void { + func onNext() { + onNext(()) + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Publicsher.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Publicsher.swift new file mode 100644 index 0000000..d3787a0 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Publicsher.swift @@ -0,0 +1,74 @@ +// +// Publicsher.swift +// RxUtils +// +// Created by Dmytro Shulzhenko on 4/29/19. +// Copyright © 2019 Dmytro Shulzhenko. All rights reserved. +// + +import RxSwift + +// MARK: Publisher. +// Like publish subject that accepts only next events. + +struct Publisher { + private let subject = PublishSubject() + + init() { } +} + +extension Publisher: ObserverType { + func on(_ event: RxSwift.Event) { + guard case .next = event else { return } + subject.on(event) + } +} + +extension Publisher: ObservableType { + func subscribe(_ observer: Observer) -> Disposable + where Observer: ObserverType, Element == Observer.Element { + return subject.subscribe(observer) + } +} + +// MARK: SharedPublisher. +// Like behavior subject, but replays only when first element was fired, also accepts only next events. + +final class SharedPublisher { + private let lock = NSRecursiveLock() + private let subject = PublishSubject() + private(set) var latestEvent: RxSwift.Event? + + init() { } +} + +extension SharedPublisher { + convenience init(initial: Element) { + self.init() + on(.next(initial)) + } +} + +extension SharedPublisher: ObserverType { + func on(_ event: RxSwift.Event) { + lock.lock() + defer { lock.unlock() } + switch event { + case .completed, .next: + latestEvent = event + subject.on(event) + case let .error(error): + log(.fatal(error)) + } + } +} + +extension SharedPublisher: ObservableType { + func subscribe(_ observer: Observer) -> Disposable + where Observer: ObserverType, SharedPublisher.Element == Observer.Element { + if let replayed = latestEvent { + observer.on(replayed) + } + return subject.subscribe(observer) + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Util.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Util.swift new file mode 100644 index 0000000..0deb2d9 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Util.swift @@ -0,0 +1,357 @@ +// +// Util.swift +// RxUtils +// +// Created by Dmytro Shulzhenko on 4/29/19. +// Copyright © 2019 Dmytro Shulzhenko. All rights reserved. +// + +import Foundation +import RxSwift +import RxCocoa + +extension Observable { + func toVoid() -> Observable { + return map { _ in } + } +} + +extension PrimitiveSequence where Trait == CompletableTrait, Element == Swift.Never { + func onErrorJustComplete() -> Completable { + return Completable.create { complete in + return self.subscribe( + onCompleted: { complete(.completed) }, + onError: { _ in complete(.completed) } + ) + } + } + + func passErrorsAssert(_ file: StaticString = #file, + _ function: StaticString = #function, + _ line: UInt = #line, + onError: @escaping (Error) -> Void) -> Completable { + return Completable.create { complete in + return self.subscribe( + onCompleted: { complete(.completed) }, + onError: { error in + onError(error) + log(.fatal(error, file, function, line)) + } + ) + } + } + + func passErrors() -> Completable { + return Completable.create { complete in + return self.subscribe( + onCompleted: { complete(.completed) }, + onError: { error in + log(.error(error)) + } + ) + } + } + + static func amb(_ sources: Completable...) -> Completable { + return Completable.create { complete in + Disposables.create( + sources.map { source in + source.subscribe( + onCompleted: { complete(.completed) }, + onError: { complete(.error($0)) } + ) + } + ) + } + } +} + +extension ObservableType { + func passErrors() -> Observable { + return Observable.create { observer in + self + .subscribe( + onNext: observer.onNext, + onError: { error in + log(.error(error)) + }, + onCompleted: observer.onCompleted + ) + } + } +} + +extension PrimitiveSequence { + func onError(switchTo other: PrimitiveSequence) -> PrimitiveSequence { + return catchError { _ in other } + } + + static func | (lhs: PrimitiveSequence, + rhs: PrimitiveSequence) -> PrimitiveSequence { + return lhs.catchError { _ in rhs } + } +} + +extension Observable { + func onError(switchTo other: Observable) -> Observable { + return catchError { _ in other } + } + + static func | (lhs: Observable, rhs: Observable) -> Observable { + return lhs.onError(switchTo: rhs) + } +} +/// + +// MARK: Observer +// Like Any Observer but accepts only next events. + +struct Observer { + private let observer: AnyObserver + + init(_ observer: AnyObserver) { + self.observer = observer + } + + func next(_ element: Element) { + observer.onNext(element) + } + + func complete() { + observer.onCompleted() + } +} + +extension Observer where Element == Void { + func next() { + next(()) + } +} + +extension ObservableType { + func bind(to observer: Observer) -> Disposable { + return subscribe(onNext: observer.next, + onError: { log(.fatal($0)) }) + } + + func bind(next observer: Observer, + error: @escaping (Error) -> Void = { log(.fatal($0)) }) -> Disposable { + return subscribe(onNext: observer.next, + onError: error) + } +} + +extension Observable { + func `do`(onNil action: @escaping () -> Void) -> Observable where Element == T? { + return `do`(onNext: { element in + guard element == nil else { + return + } + action() + }) + } +} + +extension ObservableType { + func withLatestFromBuffer + (_ second: Source, + resultSelector: @escaping (Element, Source.Element) -> ResultType) + -> Observable { + return Observable.create { observer in + var buffer: [Element] = [] + var latest: Source.Element? + let lock = NSRecursiveLock() + + let secondDisposable = second.asObservable().subscribe { event in + lock.lock(); defer { lock.unlock() } + guard case let .next(element) = event else { return } + latest = element + guard !buffer.isEmpty else { return } + buffer.map { resultSelector($0, element) }.forEach(observer.onNext) + buffer = [] + } + let disposable = self.subscribe { event in + lock.lock(); defer { lock.unlock() } + switch event { + case .next(let element): + buffer.append(element) + guard let latest = latest else { return } + buffer.map { resultSelector($0, latest) }.forEach(observer.onNext) + buffer = [] + case .completed: + observer.onCompleted() + case .error(let error): + observer.onError(error) + } + } + return Disposables.create([disposable, secondDisposable]) + } + } +} + +extension Disposables { + static func create(_ disposable: Disposable) -> Cancelable { + return create([disposable]) + } +} + +extension Single where Trait == SingleTrait { + static func createThrows(subscribe: @escaping (@escaping SingleObserver) throws -> Disposable) -> Single { + return .create { complete in + do { + return Disposables.create( + try subscribe(complete) + ) + } catch let error { + complete(.error(error)) + return Disposables.create() + } + } + } +} + +extension Completable { + static func createThrows(subscribe: @escaping (@escaping CompletableObserver) throws -> Disposable) -> Completable { + return .create { complete in + do { + return Disposables.create( + try subscribe(complete) + ) + } catch let error { + complete(.error(error)) + return Disposables.create() + } + } + } + + static func workItem(_ block: @escaping () throws -> Void) -> Completable { + return .create { complete in + do { + try block() + complete(.completed) + return Disposables.create() + } catch let error { + complete(.error(error)) + return Disposables.create() + } + } + } +} + +enum ElementChange { + case initial(Element) + case change(oldValue: Element, newValue: Element) + + var change: (oldValue: Element, newValue: Element)? { + guard case let .change(oldValue, newValue) = self else { + return nil + } + return (oldValue, newValue) + } +} + +extension ObservableType { + // with latest + + func combineWithLatestFrom(_ second: Source) -> Observable<(Element, Source.Element)> + where Source: ObservableConvertibleType { + return self.withLatestFrom(second) { ($0, $1) } + } + + func combineWithLatestFrom(_ second: Source) + -> Observable<(First, Second, Source.Element)> + where Element == (First, Second), Source: ObservableConvertibleType { + return self.withLatestFrom(second) { ($0.0, $0.1, $1) } + } + + func combineWithLatestFrom(_ second: Source) + -> Observable<(First, Second, Third, Source.Element)> + where Element == (First, Second, Third), Source: ObservableConvertibleType { + return self.withLatestFrom(second) { ($0.0, $0.1, $0.2, $1) } + } + + func combineWithLatestFrom(_ second: Source) + -> Observable<(First, Second, Third, Fourth, Source.Element)> + where Element == (First, Second, Third, Fourth), Source: ObservableConvertibleType { + return self.withLatestFrom(second) { ($0.0, $0.1, $0.2, $0.3, $1) } + } + + // Flat map + + func combineFlatMapLatest(_ second: Source, scheduler: SchedulerType) + -> Observable<(Element, Source.Element)> + where Source: ObservableConvertibleType { + return self.flatMapLatest { element in second.asObservable().take(1).map { (element, $0) } } + .observeOn(scheduler) + } + + func combineFlatMapLatest(_ second: Source) -> Observable<(Element, Source.Element)> + where Source: ObservableConvertibleType { + return combineFlatMapLatest(second, resultSelector: { ($0, $1) }) + } + + func combineFlatMapLatest(_ second: Source, + resultSelector: @escaping (Element, Source.Element) -> T) + -> Observable + where Source: ObservableConvertibleType { + return flatMapLatest { element in + second.asObservable().take(1).map { resultSelector(element, $0) } + } + } + + func combineFlatMapLatest(_ second: Source) + -> Observable<(First, Second, Source.Element)> + where Source: ObservableConvertibleType, Element == (First, Second) { + return self.flatMapLatest { element in second.asObservable().take(1).map { (element.0, element.1, $0) } } + } + + func combineFlatMapLatest(_ second: Source) + -> Observable<(First, Second, Third, Source.Element)> + where Source: ObservableConvertibleType, Element == (First, Second, Third) { + return self.flatMapLatest { element in + second.asObservable().take(1).map { + (element.0, element.1, element.2, $0) + } + } + } + + func combineFlatMapLatest(_ second: Source) + -> Observable<(First, Second, Third, Fourth, Source.Element)> + where Source: ObservableConvertibleType, Element == (First, Second, Third, Fourth) { + return self.flatMapLatest { element in + second.asObservable().take(1).map { + (element.0, element.1, element.2, element.3, $0) + } + } + } + + func combineFlatMapLatest(_ second: Source, + scheduler: SchedulerType) -> Observable + where Source: ObservableConvertibleType, Element == Void { + return self.flatMapLatest { _ in second.asObservable().take(1) }.observeOn(scheduler) + } + + // .. TBD +} + +final class BagContainer { + final class DisposeTracker: Disposable { + func dispose() { + print("DISPOSED: \(String(describing: T.self))") + } + } + + private(set) var bag = createBag() + + func resetBag() { + bag = BagContainer.createBag() + } + + private static func createBag() -> DisposeBag { + let bag = DisposeBag() + #if DEBUG + bag.insert(DisposeTracker()) + #endif + return bag + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/UIStoryboard+ViewControllers.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/UIStoryboard+ViewControllers.swift new file mode 100644 index 0000000..c791069 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/UIStoryboard+ViewControllers.swift @@ -0,0 +1,45 @@ +// +// UIStoryboard+ViewControllers.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 27/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import UIKit + +extension UIStoryboard { + static var main: UIStoryboard { + return UIStoryboard(name: "Main", bundle: nil) + } +} + +extension UIStoryboard { + var loginViewController: LoginViewController { + guard let vc = UIStoryboard.main.instantiateViewController(withIdentifier: "LoginViewController") as? LoginViewController else { + fatalError("LoginViewController couldn't be found in Storyboard file") + } + return vc + } + + var discoverViewController: DiscoverViewController { + guard let vc = UIStoryboard.main.instantiateViewController(withIdentifier: "DiscoverViewController") as? DiscoverViewController else { + fatalError("DiscoverViewController couldn't be found in Storyboard file") + } + return vc + } + + var movieDetailViewController: MovieDetailViewController { + guard let vc = UIStoryboard.main.instantiateViewController(withIdentifier: "MovieDetailViewController") as? MovieDetailViewController else { + fatalError("MovieDetailViewController couldn't be found in Storyboard file") + } + return vc + } + + var searchViewController: SearchViewController { + guard let vc = UIStoryboard.main.instantiateViewController(withIdentifier: "SearchViewController") as? SearchViewController else { + fatalError("SearchViewController couldn't be found in Storyboard file") + } + return vc + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/ViewModelType.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/ViewModelType.swift new file mode 100644 index 0000000..60a7666 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/ViewModelType.swift @@ -0,0 +1,16 @@ +// +// ViewModelType.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 27/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import Foundation + +protocol ViewModelType { + associatedtype Input + associatedtype Output + + func transform(input: Input) -> Output +} From 77066fe6e92300268edacb3ae95f8d5fe1e58cc5 Mon Sep 17 00:00:00 2001 From: Dmytro Shulzhenko Date: Tue, 22 Sep 2020 22:09:41 +0300 Subject: [PATCH 02/13] =?UTF-8?q?=E2=80=A2=20MovieDetailViewController?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tmdb-rx-driver.xcodeproj/project.pbxproj | 42 +++++---- .../Scenes/Discover/DiscoverNavigator.swift | 9 +- .../MovieDetail/MovieDetailActionBinder.swift | 29 ++++++ .../MovieDetail/MovieDetailDriver.swift | 84 +++++++++++++++++ .../MovieDetail/MovieDetailNavigator.swift | 24 ----- .../MovieDetail/MovieDetailStateBinder.swift | 45 +++++++++ .../MovieDetailViewController.swift | 63 ++++--------- .../MovieDetail/MovieDetailViewModel.swift | 92 ------------------- .../Search/{Views => Cell}/SearchCell.swift | 0 .../Search/{Views => Cell}/SearchCell.xib | 0 ...nBinder.swift => SearchActionBinder.swift} | 2 +- ...teBinder.swift => SearchStateBinder.swift} | 10 +- .../Scenes/Search/SearchViewController.swift | 13 +-- .../Utils/Binder/NavigationBinder.swift | 28 +++++- 14 files changed, 235 insertions(+), 206 deletions(-) create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailActionBinder.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailDriver.swift delete mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailNavigator.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailStateBinder.swift delete mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailViewModel.swift rename tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/{Views => Cell}/SearchCell.swift (100%) rename tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/{Views => Cell}/SearchCell.xib (100%) rename tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/{SearchViewControllerActionBinder.swift => SearchActionBinder.swift} (93%) rename tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/{SearchViewControllerStateBinder.swift => SearchStateBinder.swift} (86%) diff --git a/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.pbxproj b/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.pbxproj index 5d516fa..0f95944 100644 --- a/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.pbxproj +++ b/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.pbxproj @@ -7,6 +7,8 @@ objects = { /* Begin PBXBuildFile section */ + 1A8CB9B42519DC6800F25598 /* MovieDetailStateBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A8CB9B32519DC6800F25598 /* MovieDetailStateBinder.swift */; }; + 1A8CB9B62519DC7600F25598 /* MovieDetailActionBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A8CB9B52519DC7600F25598 /* MovieDetailActionBinder.swift */; }; 1AE0178025175EF50019F8FA /* Movie.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0177C25175EF50019F8FA /* Movie.swift */; }; 1AE0178125175EF50019F8FA /* Genre.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0177D25175EF50019F8FA /* Genre.swift */; }; 1AE0178225175EF50019F8FA /* Person.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0177E25175EF50019F8FA /* Person.swift */; }; @@ -31,8 +33,7 @@ 1AE017C3251760900019F8FA /* SearchDriver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017A6251760900019F8FA /* SearchDriver.swift */; }; 1AE017C4251760900019F8FA /* SearchCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017A8251760900019F8FA /* SearchCell.swift */; }; 1AE017C5251760900019F8FA /* SearchCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1AE017A9251760900019F8FA /* SearchCell.xib */; }; - 1AE017C7251760900019F8FA /* MovieDetailViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017AC251760900019F8FA /* MovieDetailViewModel.swift */; }; - 1AE017C8251760900019F8FA /* MovieDetailNavigator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017AD251760900019F8FA /* MovieDetailNavigator.swift */; }; + 1AE017C7251760900019F8FA /* MovieDetailDriver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017AC251760900019F8FA /* MovieDetailDriver.swift */; }; 1AE017C9251760900019F8FA /* MovieDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017AE251760900019F8FA /* MovieDetailViewController.swift */; }; 1AE017CA251760900019F8FA /* GradientImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017B0251760900019F8FA /* GradientImageView.swift */; }; 1AE017CB251760900019F8FA /* MovieDetailHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1AE017B1251760900019F8FA /* MovieDetailHeaderView.xib */; }; @@ -71,12 +72,14 @@ 1AE1096C2517800D001E5B01 /* Transitioning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE1096B2517800D001E5B01 /* Transitioning.swift */; }; 1AE1096E2517809F001E5B01 /* DisposeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE1096D2517809F001E5B01 /* DisposeViewController.swift */; }; 1AE109A52517A3AC001E5B01 /* R.generated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE109A42517A3AC001E5B01 /* R.generated.swift */; }; - 1AE109A72517A461001E5B01 /* SearchViewControllerStateBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE109A62517A461001E5B01 /* SearchViewControllerStateBinder.swift */; }; - 1AE109A92517C026001E5B01 /* SearchViewControllerActionBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE109A82517C026001E5B01 /* SearchViewControllerActionBinder.swift */; }; + 1AE109A72517A461001E5B01 /* SearchStateBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE109A62517A461001E5B01 /* SearchStateBinder.swift */; }; + 1AE109A92517C026001E5B01 /* SearchActionBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE109A82517C026001E5B01 /* SearchActionBinder.swift */; }; CE8D6EC627327C1DFC949704 /* Pods_tmdb_rx_driver.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 973976C40C7DC73287C8EF44 /* Pods_tmdb_rx_driver.framework */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 1A8CB9B32519DC6800F25598 /* MovieDetailStateBinder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovieDetailStateBinder.swift; sourceTree = ""; }; + 1A8CB9B52519DC7600F25598 /* MovieDetailActionBinder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovieDetailActionBinder.swift; sourceTree = ""; }; 1AE0176425175DD40019F8FA /* tmdb-rx-driver.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "tmdb-rx-driver.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 1AE0177525175DD50019F8FA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 1AE0177C25175EF50019F8FA /* Movie.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Movie.swift; sourceTree = ""; }; @@ -103,8 +106,7 @@ 1AE017A6251760900019F8FA /* SearchDriver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchDriver.swift; sourceTree = ""; }; 1AE017A8251760900019F8FA /* SearchCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchCell.swift; sourceTree = ""; }; 1AE017A9251760900019F8FA /* SearchCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchCell.xib; sourceTree = ""; }; - 1AE017AC251760900019F8FA /* MovieDetailViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MovieDetailViewModel.swift; sourceTree = ""; }; - 1AE017AD251760900019F8FA /* MovieDetailNavigator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MovieDetailNavigator.swift; sourceTree = ""; }; + 1AE017AC251760900019F8FA /* MovieDetailDriver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MovieDetailDriver.swift; sourceTree = ""; }; 1AE017AE251760900019F8FA /* MovieDetailViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MovieDetailViewController.swift; sourceTree = ""; }; 1AE017B0251760900019F8FA /* GradientImageView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GradientImageView.swift; sourceTree = ""; }; 1AE017B1251760900019F8FA /* MovieDetailHeaderView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MovieDetailHeaderView.xib; sourceTree = ""; }; @@ -143,8 +145,8 @@ 1AE1096B2517800D001E5B01 /* Transitioning.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Transitioning.swift; sourceTree = ""; }; 1AE1096D2517809F001E5B01 /* DisposeViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DisposeViewController.swift; sourceTree = ""; }; 1AE109A42517A3AC001E5B01 /* R.generated.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = R.generated.swift; sourceTree = ""; }; - 1AE109A62517A461001E5B01 /* SearchViewControllerStateBinder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchViewControllerStateBinder.swift; sourceTree = ""; }; - 1AE109A82517C026001E5B01 /* SearchViewControllerActionBinder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchViewControllerActionBinder.swift; sourceTree = ""; }; + 1AE109A62517A461001E5B01 /* SearchStateBinder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchStateBinder.swift; sourceTree = ""; }; + 1AE109A82517C026001E5B01 /* SearchActionBinder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchActionBinder.swift; sourceTree = ""; }; 41160404C5F5FF90CD712B13 /* Pods-tmdb-rx-driver.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-tmdb-rx-driver.release.xcconfig"; path = "Target Support Files/Pods-tmdb-rx-driver/Pods-tmdb-rx-driver.release.xcconfig"; sourceTree = ""; }; 973976C40C7DC73287C8EF44 /* Pods_tmdb_rx_driver.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_tmdb_rx_driver.framework; sourceTree = BUILT_PRODUCTS_DIR; }; AF7C2B4A13E312E1FD20CF55 /* Pods-tmdb-rx-driver.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-tmdb-rx-driver.debug.xcconfig"; path = "Target Support Files/Pods-tmdb-rx-driver/Pods-tmdb-rx-driver.debug.xcconfig"; sourceTree = ""; }; @@ -279,30 +281,31 @@ isa = PBXGroup; children = ( 1AE017A5251760900019F8FA /* SearchViewController.swift */, - 1AE109A62517A461001E5B01 /* SearchViewControllerStateBinder.swift */, - 1AE109A82517C026001E5B01 /* SearchViewControllerActionBinder.swift */, + 1AE109A62517A461001E5B01 /* SearchStateBinder.swift */, + 1AE109A82517C026001E5B01 /* SearchActionBinder.swift */, 1AE017A6251760900019F8FA /* SearchDriver.swift */, 1AE10936251765B6001E5B01 /* SearchResultItemViewModel.swift */, - 1AE017A7251760900019F8FA /* Views */, + 1AE017A7251760900019F8FA /* Cell */, ); path = Search; sourceTree = ""; }; - 1AE017A7251760900019F8FA /* Views */ = { + 1AE017A7251760900019F8FA /* Cell */ = { isa = PBXGroup; children = ( 1AE017A8251760900019F8FA /* SearchCell.swift */, 1AE017A9251760900019F8FA /* SearchCell.xib */, ); - path = Views; + path = Cell; sourceTree = ""; }; 1AE017AB251760900019F8FA /* MovieDetail */ = { isa = PBXGroup; children = ( - 1AE017AC251760900019F8FA /* MovieDetailViewModel.swift */, - 1AE017AD251760900019F8FA /* MovieDetailNavigator.swift */, 1AE017AE251760900019F8FA /* MovieDetailViewController.swift */, + 1A8CB9B32519DC6800F25598 /* MovieDetailStateBinder.swift */, + 1A8CB9B52519DC7600F25598 /* MovieDetailActionBinder.swift */, + 1AE017AC251760900019F8FA /* MovieDetailDriver.swift */, 1AE017AF251760900019F8FA /* Views */, ); path = MovieDetail; @@ -578,7 +581,7 @@ 1AE109472517671A001E5B01 /* Driver.swift in Sources */, 1AE017D9251761610019F8FA /* AppDelegate.swift in Sources */, 1AE0178025175EF50019F8FA /* Movie.swift in Sources */, - 1AE109A72517A461001E5B01 /* SearchViewControllerStateBinder.swift in Sources */, + 1AE109A72517A461001E5B01 /* SearchStateBinder.swift in Sources */, 1AE017CD251760900019F8FA /* MovieDetailTipsView.swift in Sources */, 1AE1096725177FA4001E5B01 /* ViewControllerBinder.swift in Sources */, 1AE1095225176720001E5B01 /* Unown.swift in Sources */, @@ -587,6 +590,7 @@ 1AE1096E2517809F001E5B01 /* DisposeViewController.swift in Sources */, 1AE017C1251760900019F8FA /* CarouselSectionCell.swift in Sources */, 1AE109432517671A001E5B01 /* Next.swift in Sources */, + 1A8CB9B62519DC7600F25598 /* MovieDetailActionBinder.swift in Sources */, 1AE1095425176720001E5B01 /* RawClosure.swift in Sources */, 1AE0178925175F280019F8FA /* HTTPClient.swift in Sources */, 1AE1094C2517671A001E5B01 /* Just.swift in Sources */, @@ -599,21 +603,21 @@ 1AE017C2251760900019F8FA /* SearchViewController.swift in Sources */, 1AE017D0251760900019F8FA /* LoginNavigator.swift in Sources */, 1AE1095C25176731001E5B01 /* Log.swift in Sources */, + 1A8CB9B42519DC6800F25598 /* MovieDetailStateBinder.swift in Sources */, 1AE109482517671A001E5B01 /* Latest.swift in Sources */, 1AE1095B25176731001E5B01 /* Logging.swift in Sources */, 1AE1096125176854001E5B01 /* DefaultInitializable.swift in Sources */, 1AE017D1251760900019F8FA /* LoginViewController.swift in Sources */, 1AE017CA251760900019F8FA /* GradientImageView.swift in Sources */, - 1AE109A92517C026001E5B01 /* SearchViewControllerActionBinder.swift in Sources */, + 1AE109A92517C026001E5B01 /* SearchActionBinder.swift in Sources */, 1AE017BE251760900019F8FA /* MovieCell.swift in Sources */, 1AE1095325176720001E5B01 /* Closure.swift in Sources */, 1AE017DA251761610019F8FA /* App.swift in Sources */, 1AE109A52517A3AC001E5B01 /* R.generated.swift in Sources */, 1AE0178125175EF50019F8FA /* Genre.swift in Sources */, 1AE017CE251760900019F8FA /* MovieDetailHeaderView.swift in Sources */, - 1AE017C8251760900019F8FA /* MovieDetailNavigator.swift in Sources */, 1AE109452517671A001E5B01 /* Callable.swift in Sources */, - 1AE017C7251760900019F8FA /* MovieDetailViewModel.swift in Sources */, + 1AE017C7251760900019F8FA /* MovieDetailDriver.swift in Sources */, 1AE0179225175F490019F8FA /* ViewModelType.swift in Sources */, 1AE017BB251760900019F8FA /* DiscoverViewModel.swift in Sources */, 1AE017C9251760900019F8FA /* MovieDetailViewController.swift in Sources */, diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverNavigator.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverNavigator.swift index 58dfb66..a5cfdbc 100644 --- a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverNavigator.swift +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverNavigator.swift @@ -22,14 +22,7 @@ final class DiscoverNavigator: DiscoverNavigatable { } func navigateToMovieDetailScreen(withMovieId id: Int, api: TMDBApiProvider) { - let movieDetailNavigator = MovieDetailNavigator(navigationController: navigationController) - let movieDetailViewModel = MovieDetailViewModel(dependencies: MovieDetailViewModel.Dependencies(id: id, - api: api, - navigator: movieDetailNavigator)) - let movieDetailViewController = UIStoryboard.main.movieDetailViewController - movieDetailViewController.viewModel = movieDetailViewModel - - navigationController.show(movieDetailViewController, sender: nil) + navigationController.show(MovieDetailViewController.Factory.default(id: id), sender: nil) } func navigateToPersonDetailScreen() { diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailActionBinder.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailActionBinder.swift new file mode 100644 index 0000000..29a5315 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailActionBinder.swift @@ -0,0 +1,29 @@ +// +// MovieDetailActionBinder.swift +// tmdb-rx-driver +// +// Created by Dmytro Shulzhenko on 22.09.2020. +// + +import Foundation + +final class MovieDetailActionBinder: ViewControllerBinder { + unowned let viewController: MovieDetailViewController + private let driver: MovieDetailDriving + + init(viewController: MovieDetailViewController, + driver: MovieDetailDriving) { + self.viewController = viewController + self.driver = driver + bind() + } + + func dispose() { } + + func bindLoaded() { + viewController.bag.insert( + viewController.backButton.rx.tap + .bind(onNext: driver.close) + ) + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailDriver.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailDriver.swift new file mode 100644 index 0000000..de198a9 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailDriver.swift @@ -0,0 +1,84 @@ +// +// MovieDetailDriver.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 28/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import RxSwift +import RxCocoa + +struct MovieDetailData { + let title: String + let releaseDate: String + let overview: String + let genres: String + let runtime: String + let voteAverage: String + let posterUrl: String? + let voteCount: String + let status: String +} + +extension MovieDetailData { + init(movie: Movie) { + self.title = movie.title + self.releaseDate = movie.releaseDate + self.overview = movie.overview + self.genres = movie.genres + .flatMap { + $0.map { $0.name } + .prefix(2) + .joined(separator: ", ") + } ?? "" + self.runtime = movie.runtime + .flatMap { "\($0 / 60)hr \($0 % 60)min" } ?? "" + self.voteAverage = movie.voteAverage + .flatMap { String($0) } ?? "" + self.posterUrl = movie.posterUrl.flatMap { "http://image.tmdb.org/t/p/w780/" + $0 } + self.voteCount = movie.voteCount + .flatMap { String($0) } ?? "" + self.status = movie.status ?? "" + } +} + +protocol MovieDetailDriving { + var data: Driver { get } + var didClose: Driver { get } + + func close() +} + +final class MovieDetailDriver: MovieDetailDriving { + private let closeRelay = PublishRelay() + + private let id: Int + private let api: TMDBApiProvider + + var data: Driver { + api.fetchMovieDetails(forMovieId: id) + .unwrap() + .compactMap(MovieDetailData.init) + .asDriver() + } + + var didClose: Driver { closeRelay.asDriver() } + + init(id: Int, api: TMDBApiProvider) { + self.id = id + self.api = api + } + + func close() { + closeRelay.accept(()) + } +} + +extension MovieDetailDriver: StaticFactory { + enum Factory { + static func `default`(id: Int) -> MovieDetailDriving { + MovieDetailDriver(id: id, api: TMDBApi.Factory.default) + } + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailNavigator.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailNavigator.swift deleted file mode 100644 index 92f9dda..0000000 --- a/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailNavigator.swift +++ /dev/null @@ -1,24 +0,0 @@ -// -// MovieDetailNavigator.swift -// tmdb-mvvm-pure -// -// Created by krawiecp-home on 28/01/2019. -// Copyright © 2019 tailec. All rights reserved. -// - -import UIKit - -protocol MovieDetailNavigatable { - func goBack() -} - -final class MovieDetailNavigator: MovieDetailNavigatable { - private let navigationController: UINavigationController? - - init(navigationController: UINavigationController?) { - self.navigationController = navigationController - } - func goBack() { - navigationController?.popViewController(animated: true) - } -} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailStateBinder.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailStateBinder.swift new file mode 100644 index 0000000..4baec86 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailStateBinder.swift @@ -0,0 +1,45 @@ +// +// MovieDetailStateBinder.swift +// tmdb-rx-driver +// +// Created by Dmytro Shulzhenko on 22.09.2020. +// + +import Foundation +import Nuke +final class MovieDetailStateBinder: ViewControllerBinder { + unowned let viewController: MovieDetailViewController + private let driver: MovieDetailDriving + + init(viewController: MovieDetailViewController, + driver: MovieDetailDriving) { + self.viewController = viewController + self.driver = driver + bind() + } + + func dispose() { } + + func bindLoaded() { + viewController.statusBarStyle = .lightContent + + viewController.bag.insert( + viewController.rx.viewWillAppear + .bind(onNext: unowned(self, in: MovieDetailStateBinder.viewWillAppear)), + driver.data + .drive(onNext: unowned(self, in: MovieDetailStateBinder.configure)) + ) + } + + private func configure(_ data: MovieDetailData) { + viewController.headerView.configure(with: data) + viewController.tipsView.configure(with: data) + if let url = data.posterUrl { + Nuke.loadImage(with: URL(string: url)!, into: viewController.posterImageView) + } + } + + private func viewWillAppear(_ animated: Bool) { + viewController.navigationController?.setNavigationBarHidden(true, animated: animated) + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailViewController.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailViewController.swift index a1fc695..67d6b3f 100644 --- a/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailViewController.swift +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailViewController.swift @@ -7,54 +7,29 @@ // import UIKit -import RxSwift -import RxCocoa -import Nuke -final class MovieDetailViewController: UIViewController { - var viewModel: MovieDetailViewModel! - +final class MovieDetailViewController: DisposeViewController { @IBOutlet weak var headerView: MovieDetailHeaderView! @IBOutlet weak var tipsView: MovieDetailTipsView! @IBOutlet weak var posterImageView: GradientImageView! @IBOutlet weak var backButton: UIButton! - - private let disposeBag = DisposeBag() - - override func viewDidLoad() { - super.viewDidLoad() - bindViewModel() - } - - override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - self.navigationController?.setNavigationBarHidden(true, animated: animated) - } - - override var preferredStatusBarStyle: UIStatusBarStyle { - return .lightContent - } - - private func bindViewModel() { - let input = MovieDetailViewModel.Input(ready: rx.viewWillAppear.map({ _ in }).asDriver(), - backTrigger: backButton.rx.tap.asDriver()) - - let output = viewModel.transform(input: input) - - output.data - .drive(onNext: { [weak self] data in - guard let data = data, - let strongSelf = self else { return } - strongSelf.headerView.configure(with: data) - strongSelf.tipsView.configure(with: data) - if let url = data.posterUrl { - Nuke.loadImage(with: URL(string: url)!, into: strongSelf.posterImageView) - } - }) - .disposed(by: disposeBag) - - output.back - .drive() - .disposed(by: disposeBag) +} + +extension MovieDetailViewController: StaticFactory { + enum Factory { + static func`default`(id: Int) -> MovieDetailViewController { + let vc = R.storyboard.main.movieDetailViewController()! + let driver = MovieDetailDriver.Factory.default(id: id) + let stateBinder = MovieDetailStateBinder(viewController: vc, driver: driver) + let actionBinder = MovieDetailActionBinder(viewController: vc, driver: driver) + let navigationBinder = NavigationPopBinder.Factory + .pop(viewController: vc, driver: driver.didClose) + vc.bag.insert( + stateBinder, + actionBinder, + navigationBinder + ) + return vc + } } } diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailViewModel.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailViewModel.swift deleted file mode 100644 index c65ce54..0000000 --- a/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailViewModel.swift +++ /dev/null @@ -1,92 +0,0 @@ -// -// MovieDetailViewModel.swift -// tmdb-mvvm-pure -// -// Created by krawiecp-home on 28/01/2019. -// Copyright © 2019 tailec. All rights reserved. -// - -import RxSwift -import RxCocoa - -final class MovieDetailViewModel: ViewModelType { - struct Input { - let ready: Driver - let backTrigger: Driver - } - - struct Output { - let data: Driver // nil means TMDB API errored out - let back: Driver - } - - struct Dependencies { - let id: Int - let api: TMDBApiProvider - let navigator: MovieDetailNavigatable - } - - private let dependencies: Dependencies - - init(dependencies: Dependencies) { - self.dependencies = dependencies - } - - func transform(input: MovieDetailViewModel.Input) -> MovieDetailViewModel.Output { - let data = input.ready - .asObservable() - .flatMap {_ in - self.dependencies.api.fetchMovieDetails(forMovieId: self.dependencies.id) - } - .map { movie -> MovieDetailData? in - guard let movie = movie else { return nil } - return MovieDetailData(movie: movie) - } - .asDriver(onErrorJustReturn: nil) - - let back = input.backTrigger - .do(onNext: { [weak self] _ in - guard let strongSelf = self else { return } - strongSelf.dependencies.navigator.goBack() - - }) - - return Output(data: data, back: back) - } -} - -struct MovieDetailData { - let title: String - let releaseDate: String - let overview: String - let genres: String - let runtime: String - let voteAverage: String - let posterUrl: String? - let voteCount: String - let status: String -} - -extension MovieDetailData { - init(movie: Movie) { - self.title = movie.title - self.releaseDate = movie.releaseDate - self.overview = movie.overview - self.genres = movie.genres - .flatMap { - $0.map { $0.name } - .prefix(2) - .joined(separator: ", ") - } ?? "" - self.runtime = movie.runtime - .flatMap { "\($0 / 60)hr \($0 % 60)min" } ?? "" - self.voteAverage = movie.voteAverage - .flatMap { String($0) } ?? "" - self.posterUrl = movie.posterUrl.flatMap { "http://image.tmdb.org/t/p/w780/" + $0 } - self.voteCount = movie.voteCount - .flatMap { String($0) } ?? "" - self.status = movie.status ?? "" - } -} - - diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/Views/SearchCell.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/Cell/SearchCell.swift similarity index 100% rename from tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/Views/SearchCell.swift rename to tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/Cell/SearchCell.swift diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/Views/SearchCell.xib b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/Cell/SearchCell.xib similarity index 100% rename from tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/Views/SearchCell.xib rename to tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/Cell/SearchCell.xib diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchViewControllerActionBinder.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchActionBinder.swift similarity index 93% rename from tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchViewControllerActionBinder.swift rename to tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchActionBinder.swift index 294067f..bfe2fd1 100644 --- a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchViewControllerActionBinder.swift +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchActionBinder.swift @@ -7,7 +7,7 @@ import Foundation -final class SearchViewControllerActionBinder: ViewControllerBinder { +final class SearchActionBinder: ViewControllerBinder { unowned let viewController: SearchViewController private let driver: SearchDriving diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchViewControllerStateBinder.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchStateBinder.swift similarity index 86% rename from tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchViewControllerStateBinder.swift rename to tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchStateBinder.swift index be66658..217460e 100644 --- a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchViewControllerStateBinder.swift +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchStateBinder.swift @@ -10,7 +10,7 @@ import RxSwift import RxCocoa import RxDataSources -final class SearchViewControllerStateBinder: ViewControllerBinder { +final class SearchStateBinder: ViewControllerBinder { typealias Item = SearchResultItem struct Section: SectionModelType { @@ -50,7 +50,7 @@ final class SearchViewControllerStateBinder: ViewControllerBinder { viewController.bag.insert( viewController.rx.viewWillAppear - .bind(onNext: unowned(self, in: SearchViewControllerStateBinder.viewWillAppear)), + .bind(onNext: unowned(self, in: SearchStateBinder.viewWillAppear)), driver.isSwitchHidden .drive(viewController.segmentedControl.rx.isHidden), driver.isLoading @@ -64,12 +64,12 @@ final class SearchViewControllerStateBinder: ViewControllerBinder { } } -extension SearchViewControllerStateBinder: StaticFactory { +extension SearchStateBinder: StaticFactory { enum Factory { static func `default`(_ viewController: SearchViewController, - driver: SearchDriving) -> SearchViewControllerStateBinder { + driver: SearchDriving) -> SearchStateBinder { let dataSource = RxTableViewSectionedReloadDataSource(configureCell: cellFactory) - return SearchViewControllerStateBinder(viewController: viewController, + return SearchStateBinder(viewController: viewController, driver: driver, dataSource: dataSource) } diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchViewController.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchViewController.swift index 098faf4..8c03255 100644 --- a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchViewController.swift +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchViewController.swift @@ -19,9 +19,9 @@ extension SearchViewController: StaticFactory { static var `default`: SearchViewController { let vc = R.storyboard.main.searchViewController()! let driver = SearchDriver.Factory.default - let stateBinder = SearchViewControllerStateBinder.Factory + let stateBinder = SearchStateBinder.Factory .default(vc, driver: driver) - let actionBinder = SearchViewControllerActionBinder(viewController: vc, + let actionBinder = SearchActionBinder(viewController: vc, driver: driver) let navigationBinder = NavigationPushBinder.Factory .push(viewController: vc, @@ -36,14 +36,7 @@ extension SearchViewController: StaticFactory { } private static func detailViewControllerFactory(_ item: SearchResultItem) -> UIViewController { - let movieDetailNavigator = MovieDetailNavigator(navigationController: nil) - let dependencies = MovieDetailViewModel.Dependencies(id: item.id, - api: TMDBApi.Factory.default, - navigator: movieDetailNavigator) - let movieDetailViewModel = MovieDetailViewModel(dependencies: dependencies) - let movieDetailViewController = UIStoryboard.main.movieDetailViewController - movieDetailViewController.viewModel = movieDetailViewModel - return movieDetailViewController + MovieDetailViewController.Factory.default(id: item.id) } } } diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/NavigationBinder.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/NavigationBinder.swift index c60f775..fb8f13d 100644 --- a/tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/NavigationBinder.swift +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/NavigationBinder.swift @@ -41,6 +41,10 @@ ViewController: DisposeContainer { typealias NavigationPushBinder = NavigationBinder, ViewController> where ViewController: UIViewController, ViewController: DisposeContainer +typealias NavigationPopBinder = NavigationBinder where ViewController: UIViewController, ViewController: DisposeContainer + +typealias DismissBinder = NavigationBinder where ViewController: UIViewController, ViewController: DisposeContainer + extension NavigationBinder: StaticFactory { typealias ViewControllerFactory = (Prop) -> UIViewController @@ -66,9 +70,27 @@ extension NavigationBinder: StaticFactory { let transition = NavigationPushTransition(isAnimated: animated, viewController: viewController, presentedFactory: factory) - return NavigationBinder, ViewController>(viewController: viewController, - transition: transition, - driver: driver) + return NavigationPushBinder(viewController: viewController, + transition: transition, + driver: driver) + } + + static func dismiss(viewController: ViewController, + driver: Driver, + animated: Bool = true) -> DismissBinder { + let transition = DismissTransition(isAnimated: animated, viewController: viewController) + return DismissBinder(viewController: viewController, + transition: transition, + driver: driver) + } + + static func pop(viewController: ViewController, + driver: Driver, + animated: Bool = true) -> NavigationPopBinder { + let transition = NavigationPopTransition(isAnimated: animated, viewController: viewController) + return NavigationPopBinder(viewController: viewController, + transition: transition, + driver: driver) } // // static func bindPush(on container: UINavigationController & DisposeContainer, From 5179d0efddec91781259467c77d6dc1a11604358 Mon Sep 17 00:00:00 2001 From: Dmytro Shulzhenko Date: Sun, 27 Sep 2020 13:22:51 +0300 Subject: [PATCH 03/13] =?UTF-8?q?=E2=80=A2=20login?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tmdb-rx-driver.xcodeproj/project.pbxproj | 20 +++-- .../tmdb-rx-driver/Application/App.swift | 12 +-- .../Discover/DiscoverViewController.swift | 2 +- .../Discover/Views/CarouselSectionCell.swift | 8 +- .../Scenes/Discover/Views/MovieCell.swift | 6 +- .../Scenes/Login/LoginActionBinder.swift | 32 ++++++++ .../Scenes/Login/LoginDriver.swift | 76 ++++++++++++++++++ .../Scenes/Login/LoginNavigator.swift | 25 ------ .../Scenes/Login/LoginStateBinder.swift | 48 +++++++++++ .../Scenes/Login/LoginViewController.swift | 79 +++++-------------- .../Scenes/Login/LoginViewModel.swift | 73 ----------------- .../MovieDetail/MovieDetailStateBinder.swift | 1 + .../MovieDetailViewController.swift | 9 ++- .../Views/MovieDetailHeaderView.swift | 14 ++-- .../Views/MovieDetailTipsView.swift | 6 +- .../Scenes/Search/Cell/SearchCell.swift | 6 +- .../Scenes/Search/SearchViewController.swift | 7 +- 17 files changed, 222 insertions(+), 202 deletions(-) create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginActionBinder.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginDriver.swift delete mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginNavigator.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginStateBinder.swift delete mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginViewModel.swift diff --git a/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.pbxproj b/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.pbxproj index 0f95944..d4a5893 100644 --- a/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.pbxproj +++ b/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.pbxproj @@ -7,6 +7,8 @@ objects = { /* Begin PBXBuildFile section */ + 1A0DE661251C818B00BF3D31 /* LoginActionBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A0DE660251C818B00BF3D31 /* LoginActionBinder.swift */; }; + 1A0DE663251C81A300BF3D31 /* LoginStateBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A0DE662251C81A300BF3D31 /* LoginStateBinder.swift */; }; 1A8CB9B42519DC6800F25598 /* MovieDetailStateBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A8CB9B32519DC6800F25598 /* MovieDetailStateBinder.swift */; }; 1A8CB9B62519DC7600F25598 /* MovieDetailActionBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A8CB9B52519DC7600F25598 /* MovieDetailActionBinder.swift */; }; 1AE0178025175EF50019F8FA /* Movie.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0177C25175EF50019F8FA /* Movie.swift */; }; @@ -40,8 +42,7 @@ 1AE017CC251760900019F8FA /* MovieDetailTipsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1AE017B2251760900019F8FA /* MovieDetailTipsView.xib */; }; 1AE017CD251760900019F8FA /* MovieDetailTipsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017B3251760900019F8FA /* MovieDetailTipsView.swift */; }; 1AE017CE251760900019F8FA /* MovieDetailHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017B4251760900019F8FA /* MovieDetailHeaderView.swift */; }; - 1AE017CF251760900019F8FA /* LoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017B6251760900019F8FA /* LoginViewModel.swift */; }; - 1AE017D0251760900019F8FA /* LoginNavigator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017B7251760900019F8FA /* LoginNavigator.swift */; }; + 1AE017CF251760900019F8FA /* LoginDriver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017B6251760900019F8FA /* LoginDriver.swift */; }; 1AE017D1251760900019F8FA /* LoginViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE017B8251760900019F8FA /* LoginViewController.swift */; }; 1AE017D3251761180019F8FA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1AE017D2251761180019F8FA /* Assets.xcassets */; }; 1AE017D52517612C0019F8FA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1AE017D42517612C0019F8FA /* LaunchScreen.storyboard */; }; @@ -78,6 +79,8 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + 1A0DE660251C818B00BF3D31 /* LoginActionBinder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginActionBinder.swift; sourceTree = ""; }; + 1A0DE662251C81A300BF3D31 /* LoginStateBinder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginStateBinder.swift; sourceTree = ""; }; 1A8CB9B32519DC6800F25598 /* MovieDetailStateBinder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovieDetailStateBinder.swift; sourceTree = ""; }; 1A8CB9B52519DC7600F25598 /* MovieDetailActionBinder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovieDetailActionBinder.swift; sourceTree = ""; }; 1AE0176425175DD40019F8FA /* tmdb-rx-driver.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "tmdb-rx-driver.app"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -113,8 +116,7 @@ 1AE017B2251760900019F8FA /* MovieDetailTipsView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MovieDetailTipsView.xib; sourceTree = ""; }; 1AE017B3251760900019F8FA /* MovieDetailTipsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MovieDetailTipsView.swift; sourceTree = ""; }; 1AE017B4251760900019F8FA /* MovieDetailHeaderView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MovieDetailHeaderView.swift; sourceTree = ""; }; - 1AE017B6251760900019F8FA /* LoginViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoginViewModel.swift; sourceTree = ""; }; - 1AE017B7251760900019F8FA /* LoginNavigator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoginNavigator.swift; sourceTree = ""; }; + 1AE017B6251760900019F8FA /* LoginDriver.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoginDriver.swift; sourceTree = ""; }; 1AE017B8251760900019F8FA /* LoginViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoginViewController.swift; sourceTree = ""; }; 1AE017D2251761180019F8FA /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 1AE017D42517612C0019F8FA /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; @@ -326,9 +328,10 @@ 1AE017B5251760900019F8FA /* Login */ = { isa = PBXGroup; children = ( - 1AE017B6251760900019F8FA /* LoginViewModel.swift */, - 1AE017B7251760900019F8FA /* LoginNavigator.swift */, 1AE017B8251760900019F8FA /* LoginViewController.swift */, + 1A0DE660251C818B00BF3D31 /* LoginActionBinder.swift */, + 1A0DE662251C81A300BF3D31 /* LoginStateBinder.swift */, + 1AE017B6251760900019F8FA /* LoginDriver.swift */, ); path = Login; sourceTree = ""; @@ -598,10 +601,9 @@ 1AE0178A25175F280019F8FA /* TMDBApiResponses.swift in Sources */, 1AE109462517671A001E5B01 /* Util.swift in Sources */, 1AE0178325175EF50019F8FA /* Show.swift in Sources */, - 1AE017CF251760900019F8FA /* LoginViewModel.swift in Sources */, + 1AE017CF251760900019F8FA /* LoginDriver.swift in Sources */, 1AE109492517671A001E5B01 /* NSObject+Disposable.swift in Sources */, 1AE017C2251760900019F8FA /* SearchViewController.swift in Sources */, - 1AE017D0251760900019F8FA /* LoginNavigator.swift in Sources */, 1AE1095C25176731001E5B01 /* Log.swift in Sources */, 1A8CB9B42519DC6800F25598 /* MovieDetailStateBinder.swift in Sources */, 1AE109482517671A001E5B01 /* Latest.swift in Sources */, @@ -618,12 +620,14 @@ 1AE017CE251760900019F8FA /* MovieDetailHeaderView.swift in Sources */, 1AE109452517671A001E5B01 /* Callable.swift in Sources */, 1AE017C7251760900019F8FA /* MovieDetailDriver.swift in Sources */, + 1A0DE663251C81A300BF3D31 /* LoginStateBinder.swift in Sources */, 1AE0179225175F490019F8FA /* ViewModelType.swift in Sources */, 1AE017BB251760900019F8FA /* DiscoverViewModel.swift in Sources */, 1AE017C9251760900019F8FA /* MovieDetailViewController.swift in Sources */, 1AE1096825177FA4001E5B01 /* NavigationBinder.swift in Sources */, 1AE017C4251760900019F8FA /* SearchCell.swift in Sources */, 1AE109442517671A001E5B01 /* Publicsher.swift in Sources */, + 1A0DE661251C818B00BF3D31 /* LoginActionBinder.swift in Sources */, 1AE1094B2517671A001E5B01 /* Bool.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/tmdb-rx-driver/tmdb-rx-driver/Application/App.swift b/tmdb-rx-driver/tmdb-rx-driver/Application/App.swift index ea12622..cfd22bc 100644 --- a/tmdb-rx-driver/tmdb-rx-driver/Application/App.swift +++ b/tmdb-rx-driver/tmdb-rx-driver/Application/App.swift @@ -18,9 +18,7 @@ final class App { let discoverViewController = UIStoryboard.main.discoverViewController discoverViewController.viewModel = discoverViewModel - let searchNavigationController = UINavigationController() -// let searchNavigator = SearchNavigator(navigationController: searchNavigationController) - let searchViewController = SearchViewController.Factory.default + let searchNavigationController = UINavigationController(rootViewController: SearchViewController.Factory.default) let tabBarController = UITabBarController() tabBarController.tabBar.barTintColor = UIColor(red: 18/255, green: 18/255, blue: 18/255, alpha: 1.0) @@ -29,7 +27,6 @@ final class App { discoverNavigationController.tabBarItem = UITabBarItem(title: "Discover", image: nil, selectedImage: nil) discoverNavigationController.viewControllers = [discoverViewController] - searchNavigationController.viewControllers = [searchViewController] searchNavigationController.tabBarItem = UITabBarItem(title: "Search", image: nil, selectedImage: nil) tabBarController.viewControllers = [ @@ -37,12 +34,7 @@ final class App { searchNavigationController ] - let loginNavigationController = UINavigationController() - let loginNavigator = LoginNavigator(navigationController: loginNavigationController) - let loginViewModel = LoginViewModel(dependencies: LoginViewModel.Dependencies(api: TMDBApi(), navigator: loginNavigator)) - let loginViewController = UIStoryboard.main.loginViewController - loginViewController.viewModel = loginViewModel - loginNavigationController.viewControllers = [loginViewController] + let loginNavigationController = UINavigationController(rootViewController: LoginViewController.Factory.default) window.rootViewController = tabBarController window.makeKeyAndVisible() diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewController.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewController.swift index 5d67ebe..992c676 100644 --- a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewController.swift +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewController.swift @@ -13,7 +13,7 @@ import RxCocoa final class DiscoverViewController: UIViewController { var viewModel: DiscoverViewModel! - @IBOutlet weak var carouselsView: DiscoverMainView! + @IBOutlet private (set) var carouselsView: DiscoverMainView! private let disposeBag = DisposeBag() diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/CarouselSectionCell.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/CarouselSectionCell.swift index c3799a9..69a148c 100644 --- a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/CarouselSectionCell.swift +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/CarouselSectionCell.swift @@ -9,10 +9,10 @@ import UIKit final class CarouselSectionCell: UITableViewCell { - @IBOutlet weak var collectionViewHeightConstraint: NSLayoutConstraint! - @IBOutlet weak var titleLabel: UILabel! - @IBOutlet weak var subtitleLabel: UILabel! - @IBOutlet weak var collectionView: UICollectionView! + @IBOutlet private (set) var collectionViewHeightConstraint: NSLayoutConstraint! + @IBOutlet private (set) var titleLabel: UILabel! + @IBOutlet private (set) var subtitleLabel: UILabel! + @IBOutlet private (set) var collectionView: UICollectionView! override func awakeFromNib() { let layout: UICollectionViewFlowLayout = { diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/MovieCell.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/MovieCell.swift index a5ab9bc..836e834 100644 --- a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/MovieCell.swift +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/Views/MovieCell.swift @@ -9,9 +9,9 @@ import UIKit class MovieCell: UICollectionViewCell { - @IBOutlet weak var imageView: UIImageView! - @IBOutlet weak var titleLabel: UILabel! - @IBOutlet weak var subtitleLabel: UILabel! + @IBOutlet private (set) var imageView: UIImageView! + @IBOutlet private (set) var titleLabel: UILabel! + @IBOutlet private (set) var subtitleLabel: UILabel! private struct Constants { static let maxHeight: CGFloat = 400 diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginActionBinder.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginActionBinder.swift new file mode 100644 index 0000000..a08512e --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginActionBinder.swift @@ -0,0 +1,32 @@ +// +// LoginActionBinder.swift +// tmdb-rx-driver +// +// Created by Dmytro Shulzhenko on 24.09.2020. +// + +import Foundation + +final class LoginActionBinder: ViewControllerBinder { + private let driver: LoginDriving + unowned let viewController: LoginViewController + + init(viewController: LoginViewController, driver: LoginDriving) { + self.driver = driver + self.viewController = viewController + bind() + } + + func dispose() { } + + func bindLoaded() { + let userName = viewController.usernameTextField.rx.text.map({ $0 ?? "" }) + let password = viewController.passwordTextField.rx.text.map({ $0 ?? "" }) + + viewController.bag.insert( + userName.bind(onNext: set(unowned: self, to: \.driver.userName)), + password.bind(onNext: set(unowned: self, to: \.driver.password)), + viewController.loginButton.rx.tap.bind(onNext: driver.login) + ) + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginDriver.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginDriver.swift new file mode 100644 index 0000000..97723d1 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginDriver.swift @@ -0,0 +1,76 @@ +// +// LoginViewModel.swift +// tmdb-mvvm-pure +// +// Created by krawiecp-home on 27/01/2019. +// Copyright © 2019 tailec. All rights reserved. +// + +import RxSwift +import RxCocoa + +enum LoginViewState { + case success + case failure + case loading + case disabled +} + +protocol LoginDriving: class { + var state: Driver { get } + var userName: String { get set } + var password: String { get set } + func login() +} + +final class LoginDriver: LoginDriving { + private let activityIndicator = ActivityIndicator() + private let stateRelay = PublishRelay() + + private let api: TMDBApiProvider + + let bag = DisposeBag() + + var state: Driver { stateRelay.asDriver() } + var userName: String = "" { didSet { validateCredentials() } } + var password: String = "" { didSet { validateCredentials() } } + + private var areCredentialsValid: Bool { + userName.count > 0 && password.count >= 4 + } + + init(api: TMDBApiProvider) { + self.api = api + bind() + } + + func login() { + api.login(withUsername: userName, password: password) + .trackActivity(activityIndicator) + .map({ $0 ? .success : .failure }) + .bind(onNext: stateRelay.accept) + .disposed(by: bag) + } + + private func bind() { + activityIndicator + .filter({ $0 }) + .map({ _ in LoginViewState.loading }) + .drive(onNext: stateRelay.accept) + .disposed(by: bag) + } + + private func validateCredentials() { + if !areCredentialsValid { + stateRelay.accept(.disabled) + } + } +} + +extension LoginDriver: StaticFactory { + enum Factory { + static var `default`: LoginDriving { + LoginDriver(api: TMDBApi.Factory.default) + } + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginNavigator.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginNavigator.swift deleted file mode 100644 index daf65b6..0000000 --- a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginNavigator.swift +++ /dev/null @@ -1,25 +0,0 @@ -// -// LoginNavigator.swift -// tmdb-mvvm-pure -// -// Created by krawiecp-home on 27/01/2019. -// Copyright © 2019 tailec. All rights reserved. -// - -import UIKit - -protocol LoginNavigatable { - func toMain() -} - -final class LoginNavigator { - private let navigationController: UINavigationController - - init(navigationController: UINavigationController) { - self.navigationController = navigationController - } - - func toMain() { - navigationController.dismiss(animated: true, completion: nil) - } -} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginStateBinder.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginStateBinder.swift new file mode 100644 index 0000000..fb321bd --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginStateBinder.swift @@ -0,0 +1,48 @@ +// +// LoginStateBinder.swift +// tmdb-rx-driver +// +// Created by Dmytro Shulzhenko on 24.09.2020. +// + +import UIKit + +final class LoginStateBinder: ViewControllerBinder { + private let driver: LoginDriving + unowned let viewController: LoginViewController + + init(viewController: LoginViewController, driver: LoginDriving) { + self.driver = driver + self.viewController = viewController + bind() + } + + func dispose() { } + + func bindLoaded() { + viewController.statusBarStyle = .lightContent + + viewController.bag.insert( + viewController.rx.viewWillAppear + .bind(onNext: unowned(self, in: LoginStateBinder.viewWillAppear)), + driver.state + .drive(onNext: unowned(self, in: LoginStateBinder.applyState)) + ) + } + + private func viewWillAppear(_ animated: Bool) { + viewController.navigationController?.setNavigationBarHidden(true, animated: animated) + } + + private func applyState(_ state: LoginViewState) { + let isLoading = state == .loading + UIApplication.shared.isNetworkActivityIndicatorVisible = isLoading + + let isEnabled = state != .disabled + + viewController.loginButton.isEnabled = isEnabled + viewController.loginButton.backgroundColor = isEnabled ? + UIColor(red: 255/255, green: 185/255, blue: 45/255, alpha: 1.0) : + UIColor.lightGray + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginViewController.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginViewController.swift index 1636ba8..e1c2bad 100644 --- a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginViewController.swift +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginViewController.swift @@ -10,63 +10,26 @@ import UIKit import RxSwift import RxCocoa -final class LoginViewController: UIViewController { - var viewModel: LoginViewModel! - - @IBOutlet weak var usernameTextField: UITextField! - @IBOutlet weak var passwordTextField: UITextField! - @IBOutlet weak var loginButton: UIButton! - - private let disposeBag = DisposeBag() - - override func viewDidLoad() { - super.viewDidLoad() - bindViewModel() - } - - override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - self.navigationController?.setNavigationBarHidden(true, animated: animated) - } - - override var preferredStatusBarStyle: UIStatusBarStyle { - return .lightContent - } - - private func bindViewModel() { - let input = LoginViewModel.Input( - username: usernameTextField.rx.text.orEmpty.asDriver(), - password: passwordTextField.rx.text.orEmpty.asDriver(), - loginTaps: loginButton.rx.tap.asSignal() - ) - - let output = viewModel.transform(input: input) - - output.enabled - .drive(loginButton.rx.isEnabled) - .disposed(by: disposeBag) - - output.enabled - .drive(onNext: { [weak self] enabled in - guard let strongSelf = self else { return } - strongSelf.loginButton.backgroundColor = enabled ? - UIColor(red: 255/255, green: 185/255, blue: 45/255, alpha: 1.0) : - UIColor.lightGray - }) - .disposed(by: disposeBag) - - output.loading - .drive(UIApplication.shared.rx.isNetworkActivityIndicatorVisible) - .disposed(by: disposeBag) - - output.result - .filter { $0 == LoginResult.failure } - .drive(onNext: { [weak self] _ in - guard let strongSelf = self else { return } - let alert = UIAlertController(title: "Oops!", message: "Login failed", preferredStyle: .alert) - alert.addAction(UIAlertAction(title: "OK", style: .default) { _ in }) - strongSelf.present(alert, animated: true, completion: nil) - }) - .disposed(by: disposeBag) +final class LoginViewController: DisposeViewController { + @IBOutlet private (set) var usernameTextField: UITextField! + @IBOutlet private (set) var passwordTextField: UITextField! + @IBOutlet private (set) var loginButton: UIButton! +} + +extension LoginViewController: StaticFactory { + enum Factory { + static var `default`: LoginViewController { + let vc = R.storyboard.main.loginViewController()! + let driver = LoginDriver.Factory.default + let stateBinder = LoginStateBinder(viewController: vc, driver: driver) + let actionBinder = LoginActionBinder(viewController: vc, driver: driver) + + let toMainDriver = driver.state.compactMap({ $0 == .success ? () : nil }) + let navigationBinder = DismissBinder.Factory + .dismiss(viewController: vc, driver: toMainDriver) + + vc.bag.insert(stateBinder, actionBinder, navigationBinder) + return vc + } } } diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginViewModel.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginViewModel.swift deleted file mode 100644 index e4506ec..0000000 --- a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginViewModel.swift +++ /dev/null @@ -1,73 +0,0 @@ -// -// LoginViewModel.swift -// tmdb-mvvm-pure -// -// Created by krawiecp-home on 27/01/2019. -// Copyright © 2019 tailec. All rights reserved. -// - -import RxSwift -import RxCocoa - -enum LoginResult { - case success - case failure -} - -final class LoginViewModel: ViewModelType { - struct Input { - let username: Driver - let password: Driver - let loginTaps: Signal - } - - struct Output { - let enabled: Driver - let loading: Driver - let result: Driver - } - - struct Dependencies { - let api: TMDBApiProvider - let navigator: LoginNavigator - } - - private let dependencies: Dependencies - - init(dependencies: Dependencies) { - self.dependencies = dependencies - } - - func transform(input: LoginViewModel.Input) -> LoginViewModel.Output { - let isUsernameValid = input.username - .map { $0.count > 0 } - let isPasswordValid = input.password - .map { $0.count >= 4 } - let enabled = Driver.combineLatest(isUsernameValid, isPasswordValid) { $0 && $1 } - - let loadingIndicator = ActivityIndicator() - let loading = loadingIndicator.asDriver() - - let usernameAndPassword = Driver.combineLatest(input.username, input.password) { ($0, $1 )} - .asObservable() - let result = input.loginTaps - .asObservable() - .withLatestFrom(usernameAndPassword) - .flatMapLatest { pair -> Observable in - let (username, password) = pair - return self.dependencies.api.login(withUsername: username, password: password) - .trackActivity(loadingIndicator) - } - .map { $0 ? LoginResult.success : LoginResult.failure } - .asDriver(onErrorJustReturn: .failure) - .do(onNext: { [weak self] loginResult in - guard loginResult == LoginResult.success, - let strongSelf = self else { return } - strongSelf.dependencies.navigator.toMain() - }) - - return Output(enabled: enabled, - loading: loading, - result: result) - } -} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailStateBinder.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailStateBinder.swift index 4baec86..a5ba4b3 100644 --- a/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailStateBinder.swift +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailStateBinder.swift @@ -7,6 +7,7 @@ import Foundation import Nuke + final class MovieDetailStateBinder: ViewControllerBinder { unowned let viewController: MovieDetailViewController private let driver: MovieDetailDriving diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailViewController.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailViewController.swift index 67d6b3f..59c8916 100644 --- a/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailViewController.swift +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/MovieDetailViewController.swift @@ -7,12 +7,13 @@ // import UIKit +import RxSwift final class MovieDetailViewController: DisposeViewController { - @IBOutlet weak var headerView: MovieDetailHeaderView! - @IBOutlet weak var tipsView: MovieDetailTipsView! - @IBOutlet weak var posterImageView: GradientImageView! - @IBOutlet weak var backButton: UIButton! + @IBOutlet private(set) var headerView: MovieDetailHeaderView! + @IBOutlet private(set) var tipsView: MovieDetailTipsView! + @IBOutlet private(set) var posterImageView: GradientImageView! + @IBOutlet private(set) var backButton: UIButton! } extension MovieDetailViewController: StaticFactory { diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/MovieDetailHeaderView.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/MovieDetailHeaderView.swift index 3b3abeb..5c7e078 100644 --- a/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/MovieDetailHeaderView.swift +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/MovieDetailHeaderView.swift @@ -9,13 +9,13 @@ import UIKit final class MovieDetailHeaderView: UIView { - @IBOutlet weak var titleLabel: UILabel! - @IBOutlet weak var releaseDateLabel: UILabel! - @IBOutlet weak var genresLabel: UILabel! - @IBOutlet weak var runtimeLabel: UILabel! - @IBOutlet weak var voteAverageLabel: UILabel! - @IBOutlet weak var overviewLabel: UILabel! - @IBOutlet var contentView: UIView! + @IBOutlet private(set) var titleLabel: UILabel! + @IBOutlet private(set) var releaseDateLabel: UILabel! + @IBOutlet private(set) var genresLabel: UILabel! + @IBOutlet private(set) var runtimeLabel: UILabel! + @IBOutlet private(set) var voteAverageLabel: UILabel! + @IBOutlet private(set) var overviewLabel: UILabel! + @IBOutlet private(set) var contentView: UIView! override init(frame: CGRect) { super.init(frame: frame) diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/MovieDetailTipsView.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/MovieDetailTipsView.swift index 443085b..85023b4 100644 --- a/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/MovieDetailTipsView.swift +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/MovieDetail/Views/MovieDetailTipsView.swift @@ -9,9 +9,9 @@ import UIKit final class MovieDetailTipsView: UIView { - @IBOutlet weak var voteCountLabel: UILabel! - @IBOutlet weak var statusLabel: UILabel! - @IBOutlet var contentView: UIView! + @IBOutlet private(set) var voteCountLabel: UILabel! + @IBOutlet private(set) var statusLabel: UILabel! + @IBOutlet private(set) var contentView: UIView! override init(frame: CGRect) { super.init(frame: frame) setup() diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/Cell/SearchCell.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/Cell/SearchCell.swift index 8fe9193..1013379 100644 --- a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/Cell/SearchCell.swift +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/Cell/SearchCell.swift @@ -10,9 +10,9 @@ import UIKit import Nuke class SearchCell: UITableViewCell { - @IBOutlet weak var titleImageView: UIImageView! - @IBOutlet weak var titleLabel: UILabel! - @IBOutlet weak var subtitleLabel: UILabel! + @IBOutlet private(set) var titleImageView: UIImageView! + @IBOutlet private(set) var titleLabel: UILabel! + @IBOutlet private(set) var subtitleLabel: UILabel! override func awakeFromNib() { selectionStyle = .none diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchViewController.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchViewController.swift index 8c03255..2705f41 100644 --- a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchViewController.swift +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Search/SearchViewController.swift @@ -7,11 +7,12 @@ // import UIKit +import RxSwift final class SearchViewController: DisposeViewController { - @IBOutlet weak var searchTextField: UITextField! - @IBOutlet weak var segmentedControl: UISegmentedControl! - @IBOutlet weak var tableView: UITableView! + @IBOutlet private(set) var searchTextField: UITextField! + @IBOutlet private(set) var segmentedControl: UISegmentedControl! + @IBOutlet private(set) var tableView: UITableView! } extension SearchViewController: StaticFactory { From a69a2d190708664a91451183e8c5bccc8f092a5b Mon Sep 17 00:00:00 2001 From: Dmytro Shulzhenko Date: Mon, 28 Sep 2020 12:54:08 +0300 Subject: [PATCH 04/13] no message --- .../tmdb-rx-driver.xcodeproj/project.pbxproj | 6 +- .../xcschemes/tmdb-rx-driver.xcscheme | 78 +++++++++++++++++++ .../Scenes/Discover/CarouselViewModel.swift | 64 +++++++++++++++ .../Scenes/Discover/DiscoverViewModel.swift | 69 +++------------- .../Scenes/Login/LoginDriver.swift | 5 +- 5 files changed, 161 insertions(+), 61 deletions(-) create mode 100644 tmdb-rx-driver/tmdb-rx-driver.xcodeproj/xcshareddata/xcschemes/tmdb-rx-driver.xcscheme create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/CarouselViewModel.swift diff --git a/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.pbxproj b/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.pbxproj index d4a5893..c5a820b 100644 --- a/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.pbxproj +++ b/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.pbxproj @@ -11,6 +11,7 @@ 1A0DE663251C81A300BF3D31 /* LoginStateBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A0DE662251C81A300BF3D31 /* LoginStateBinder.swift */; }; 1A8CB9B42519DC6800F25598 /* MovieDetailStateBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A8CB9B32519DC6800F25598 /* MovieDetailStateBinder.swift */; }; 1A8CB9B62519DC7600F25598 /* MovieDetailActionBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A8CB9B52519DC7600F25598 /* MovieDetailActionBinder.swift */; }; + 1AA01CB42520C8A7000C2B5B /* CarouselViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AA01CB32520C8A7000C2B5B /* CarouselViewModel.swift */; }; 1AE0178025175EF50019F8FA /* Movie.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0177C25175EF50019F8FA /* Movie.swift */; }; 1AE0178125175EF50019F8FA /* Genre.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0177D25175EF50019F8FA /* Genre.swift */; }; 1AE0178225175EF50019F8FA /* Person.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0177E25175EF50019F8FA /* Person.swift */; }; @@ -83,6 +84,7 @@ 1A0DE662251C81A300BF3D31 /* LoginStateBinder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginStateBinder.swift; sourceTree = ""; }; 1A8CB9B32519DC6800F25598 /* MovieDetailStateBinder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovieDetailStateBinder.swift; sourceTree = ""; }; 1A8CB9B52519DC7600F25598 /* MovieDetailActionBinder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovieDetailActionBinder.swift; sourceTree = ""; }; + 1AA01CB32520C8A7000C2B5B /* CarouselViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CarouselViewModel.swift; sourceTree = ""; }; 1AE0176425175DD40019F8FA /* tmdb-rx-driver.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "tmdb-rx-driver.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 1AE0177525175DD50019F8FA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 1AE0177C25175EF50019F8FA /* Movie.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Movie.swift; sourceTree = ""; }; @@ -261,6 +263,7 @@ 1AE0179A251760900019F8FA /* DiscoverNavigator.swift */, 1AE0179B251760900019F8FA /* DiscoverViewController.swift */, 1AE0179C251760900019F8FA /* DiscoverViewModel.swift */, + 1AA01CB32520C8A7000C2B5B /* CarouselViewModel.swift */, 1AE0179D251760900019F8FA /* Views */, ); path = Discover; @@ -329,8 +332,8 @@ isa = PBXGroup; children = ( 1AE017B8251760900019F8FA /* LoginViewController.swift */, - 1A0DE660251C818B00BF3D31 /* LoginActionBinder.swift */, 1A0DE662251C81A300BF3D31 /* LoginStateBinder.swift */, + 1A0DE660251C818B00BF3D31 /* LoginActionBinder.swift */, 1AE017B6251760900019F8FA /* LoginDriver.swift */, ); path = Login; @@ -598,6 +601,7 @@ 1AE0178925175F280019F8FA /* HTTPClient.swift in Sources */, 1AE1094C2517671A001E5B01 /* Just.swift in Sources */, 1AE1096C2517800D001E5B01 /* Transitioning.swift in Sources */, + 1AA01CB42520C8A7000C2B5B /* CarouselViewModel.swift in Sources */, 1AE0178A25175F280019F8FA /* TMDBApiResponses.swift in Sources */, 1AE109462517671A001E5B01 /* Util.swift in Sources */, 1AE0178325175EF50019F8FA /* Show.swift in Sources */, diff --git a/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/xcshareddata/xcschemes/tmdb-rx-driver.xcscheme b/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/xcshareddata/xcschemes/tmdb-rx-driver.xcscheme new file mode 100644 index 0000000..3141c14 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/xcshareddata/xcschemes/tmdb-rx-driver.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/CarouselViewModel.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/CarouselViewModel.swift new file mode 100644 index 0000000..7dbdbc4 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/CarouselViewModel.swift @@ -0,0 +1,64 @@ +// +// CarouselViewModel.swift +// tmdb-rx-driver +// +// Created by Dmytro Shulzhenko on 27.09.2020. +// + +import Foundation + +struct CarouselViewModel { + let title: String + let subtitle: String + let items: [CarouselItemViewModel] +} + +extension CarouselViewModel { + init?(movies: [Movie]?) { + guard let movies = movies else { return nil } + self.title = "Popular movies" + self.subtitle = "Most popular in the world" + self.items = movies.map { CarouselItemViewModel(movie: $0) } + } + + init?(people: [Person]?) { + guard let people = people else { return nil } + self.title = "Trending people" + self.subtitle = "Find out which celebrities are trending today" + self.items = people.map { CarouselItemViewModel(person: $0) } + + } + + init?(shows: [Show]?) { + guard let shows = shows else { return nil } + self.title = "TV shows" + self.subtitle = "Latest updates on popular TV shows" + self.items = shows.map { CarouselItemViewModel(show: $0) } + } +} + +struct CarouselItemViewModel { + let title: String + let subtitle: String + let imageUrl: String? +} + +extension CarouselItemViewModel { + init(movie: Movie) { + self.title = movie.title + self.subtitle = movie.releaseDate + self.imageUrl = movie.posterUrl.flatMap { "http://image.tmdb.org/t/p/w185/" + $0 } + } + + init(person: Person) { + self.title = person.name + self.subtitle = person.knownForTitles?.first ?? " " + self.imageUrl = person.profileUrl.flatMap { "http://image.tmdb.org/t/p/w185/" + $0 } + } + + init(show: Show) { + self.title = show.name + self.subtitle = show.releaseDate + self.imageUrl = "http://image.tmdb.org/t/p/w185/" + show.posterUrl + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewModel.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewModel.swift index a14c0e2..7feab34 100644 --- a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewModel.swift +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewModel.swift @@ -9,6 +9,18 @@ import RxSwift import RxCocoa +enum DiscoverState { + case none + case loading + case results([CarouselViewModel]) +} + +enum DiscoverSelection { + case movie + case person + case show +} + final class DiscoverViewModel: ViewModelType { struct Input { let ready: Driver @@ -82,60 +94,3 @@ final class DiscoverViewModel: ViewModelType { selected: selected) } } - - -extension CarouselViewModel { - init?(movies: [Movie]?) { - guard let movies = movies else { return nil } - self.title = "Popular movies" - self.subtitle = "Most popular in the world" - self.items = movies.map { CarouselItemViewModel(movie: $0) } - } - - init?(people: [Person]?) { - guard let people = people else { return nil } - self.title = "Trending people" - self.subtitle = "Find out which celebrities are trending today" - self.items = people.map { CarouselItemViewModel(person: $0) } - - } - - init?(shows: [Show]?) { - guard let shows = shows else { return nil } - self.title = "TV shows" - self.subtitle = "Latest updates on popular TV shows" - self.items = shows.map { CarouselItemViewModel(show: $0) } - } -} - -struct CarouselItemViewModel { - let title: String - let subtitle: String - let imageUrl: String? -} - -struct CarouselViewModel { - let title: String - let subtitle: String - let items: [CarouselItemViewModel] -} - -extension CarouselItemViewModel { - init(movie: Movie) { - self.title = movie.title - self.subtitle = movie.releaseDate - self.imageUrl = movie.posterUrl.flatMap { "http://image.tmdb.org/t/p/w185/" + $0 } - } - - init(person: Person) { - self.title = person.name - self.subtitle = person.knownForTitles?.first ?? " " - self.imageUrl = person.profileUrl.flatMap { "http://image.tmdb.org/t/p/w185/" + $0 } - } - - init(show: Show) { - self.title = show.name - self.subtitle = show.releaseDate - self.imageUrl = "http://image.tmdb.org/t/p/w185/" + show.posterUrl - } -} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginDriver.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginDriver.swift index 97723d1..7f194c0 100644 --- a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginDriver.swift +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Login/LoginDriver.swift @@ -14,6 +14,7 @@ enum LoginViewState { case failure case loading case disabled + case enabled } protocol LoginDriving: class { @@ -61,9 +62,7 @@ final class LoginDriver: LoginDriving { } private func validateCredentials() { - if !areCredentialsValid { - stateRelay.accept(.disabled) - } + stateRelay.accept(areCredentialsValid ? .enabled : .disabled) } } From afba411df29f5c2949c7218824f149513c5df6fe Mon Sep 17 00:00:00 2001 From: Dmytro Shulzhenko Date: Mon, 28 Sep 2020 12:55:39 +0300 Subject: [PATCH 05/13] no message --- 1.png | Bin 0 -> 13811 bytes 2.png | Bin 0 -> 103953 bytes 3.png | Bin 0 -> 92470 bytes 4.png | Bin 0 -> 41472 bytes tmdb-rx-driver/tmdb-rx-driver/1.png | Bin 0 -> 13811 bytes tmdb-rx-driver/tmdb-rx-driver/2.png | Bin 0 -> 103953 bytes tmdb-rx-driver/tmdb-rx-driver/3.png | Bin 0 -> 92470 bytes tmdb-rx-driver/tmdb-rx-driver/4.png | Bin 0 -> 41472 bytes tmdb-rx-driver/tmdb-rx-driver/README.md | 27 ++++++++++++++++++++++++ 9 files changed, 27 insertions(+) create mode 100644 1.png create mode 100644 2.png create mode 100644 3.png create mode 100644 4.png create mode 100644 tmdb-rx-driver/tmdb-rx-driver/1.png create mode 100644 tmdb-rx-driver/tmdb-rx-driver/2.png create mode 100644 tmdb-rx-driver/tmdb-rx-driver/3.png create mode 100644 tmdb-rx-driver/tmdb-rx-driver/4.png create mode 100644 tmdb-rx-driver/tmdb-rx-driver/README.md diff --git a/1.png b/1.png new file mode 100644 index 0000000000000000000000000000000000000000..180f48b21966598c795baa6cf02922d84af98bf4 GIT binary patch literal 13811 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ν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%0AcKZ+aynaglG{o>3& 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%0A-;vQ2m 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

      4B4pN8N2gQthh>xSWub(@A4 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 sz?X{|i#>Mq<~do Date: Mon, 28 Sep 2020 12:56:52 +0300 Subject: [PATCH 06/13] =?UTF-8?q?=E2=80=A2=20update=20readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tmdb-rx-driver/{tmdb-rx-driver => }/1.png | Bin tmdb-rx-driver/{tmdb-rx-driver => }/2.png | Bin tmdb-rx-driver/{tmdb-rx-driver => }/3.png | Bin tmdb-rx-driver/{tmdb-rx-driver => }/4.png | Bin tmdb-rx-driver/{tmdb-rx-driver => }/README.md | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename tmdb-rx-driver/{tmdb-rx-driver => }/1.png (100%) rename tmdb-rx-driver/{tmdb-rx-driver => }/2.png (100%) rename tmdb-rx-driver/{tmdb-rx-driver => }/3.png (100%) rename tmdb-rx-driver/{tmdb-rx-driver => }/4.png (100%) rename tmdb-rx-driver/{tmdb-rx-driver => }/README.md (100%) diff --git a/tmdb-rx-driver/tmdb-rx-driver/1.png b/tmdb-rx-driver/1.png similarity index 100% rename from tmdb-rx-driver/tmdb-rx-driver/1.png rename to tmdb-rx-driver/1.png diff --git a/tmdb-rx-driver/tmdb-rx-driver/2.png b/tmdb-rx-driver/2.png similarity index 100% rename from tmdb-rx-driver/tmdb-rx-driver/2.png rename to tmdb-rx-driver/2.png diff --git a/tmdb-rx-driver/tmdb-rx-driver/3.png b/tmdb-rx-driver/3.png similarity index 100% rename from tmdb-rx-driver/tmdb-rx-driver/3.png rename to tmdb-rx-driver/3.png diff --git a/tmdb-rx-driver/tmdb-rx-driver/4.png b/tmdb-rx-driver/4.png similarity index 100% rename from tmdb-rx-driver/tmdb-rx-driver/4.png rename to tmdb-rx-driver/4.png diff --git a/tmdb-rx-driver/tmdb-rx-driver/README.md b/tmdb-rx-driver/README.md similarity index 100% rename from tmdb-rx-driver/tmdb-rx-driver/README.md rename to tmdb-rx-driver/README.md From 18ab761609b3c23ec91f729ef2e9cf06fadc1d8d Mon Sep 17 00:00:00 2001 From: Dmitriy Shulzhenko Date: Mon, 28 Sep 2020 12:57:42 +0300 Subject: [PATCH 07/13] Update README.md --- tmdb-rx-driver/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmdb-rx-driver/README.md b/tmdb-rx-driver/README.md index 4b89cb8..2a431ec 100644 --- a/tmdb-rx-driver/README.md +++ b/tmdb-rx-driver/README.md @@ -10,7 +10,7 @@ This example uses RxSwift observables as binding mechanism between `ViewModel` a ## Implementation -In progress. +### [Read Wiki](https://github.com/dmsl1805/Cookbook/wiki) ## Installation From 9070f7c7b6e8cecb7fc35524025c6144e5c2fe59 Mon Sep 17 00:00:00 2001 From: Dmitriy Shulzhenko Date: Tue, 29 Sep 2020 16:06:57 +0300 Subject: [PATCH 08/13] Update README.md --- tmdb-rx-driver/README.md | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/tmdb-rx-driver/README.md b/tmdb-rx-driver/README.md index 2a431ec..8ae8ef3 100644 --- a/tmdb-rx-driver/README.md +++ b/tmdb-rx-driver/README.md @@ -1,18 +1,14 @@ -# tmdb-mvvm-rxswift-pure +# tmdb-mvvm-rxswift-driver 🔒 ** If you want to login, use username `iostest` and password `test`.** -This example uses RxSwift observables as binding mechanism between `ViewModel` and `ViewController`. Also, it uses simple navigator for transitions between screns. +This example uses RxSwift Drivers as binding mechanism between `Driver` and `ViewController`. +### [Read Wiki](https://github.com/dmsl1805/Cookbook/wiki) | ![](1.png) | ![](2.png) | | --- | --- | | ![](3.png) | ![](4.png) | - -## Implementation -### [Read Wiki](https://github.com/dmsl1805/Cookbook/wiki) - - ## Installation Clone the repository: From a82e70b25b83149a28011bcd2adaec3b8ea51e6b Mon Sep 17 00:00:00 2001 From: Dmytro Shulzhenko Date: Sun, 4 Oct 2020 13:53:31 +0300 Subject: [PATCH 09/13] =?UTF-8?q?=E2=80=A2=20Discover?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tmdb-rx-driver.xcodeproj/project.pbxproj | 8 +- .../tmdb-rx-driver/Application/App.swift | 8 +- .../Scenes/Discover/CarouselViewModel.swift | 10 ++ .../Scenes/Discover/DiscoverNavigator.swift | 35 ------ .../Discover/DiscoverViewController.swift | 66 +++++------ .../DiscoverViewControllerBinder.swift | 57 +++++++++ .../Scenes/Discover/DiscoverViewModel.swift | 110 +++++++----------- .../Utils/Binder/NavigationBinder.swift | 2 +- .../Utils/Binder/Transitioning.swift | 13 ++- 9 files changed, 150 insertions(+), 159 deletions(-) delete mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverNavigator.swift create mode 100644 tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewControllerBinder.swift diff --git a/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.pbxproj b/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.pbxproj index c5a820b..0613c39 100644 --- a/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.pbxproj +++ b/tmdb-rx-driver/tmdb-rx-driver.xcodeproj/project.pbxproj @@ -9,6 +9,7 @@ /* Begin PBXBuildFile section */ 1A0DE661251C818B00BF3D31 /* LoginActionBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A0DE660251C818B00BF3D31 /* LoginActionBinder.swift */; }; 1A0DE663251C81A300BF3D31 /* LoginStateBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A0DE662251C81A300BF3D31 /* LoginStateBinder.swift */; }; + 1A1DA8B72529C0E2008A08BE /* DiscoverViewControllerBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A1DA8B62529C0E2008A08BE /* DiscoverViewControllerBinder.swift */; }; 1A8CB9B42519DC6800F25598 /* MovieDetailStateBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A8CB9B32519DC6800F25598 /* MovieDetailStateBinder.swift */; }; 1A8CB9B62519DC7600F25598 /* MovieDetailActionBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A8CB9B52519DC7600F25598 /* MovieDetailActionBinder.swift */; }; 1AA01CB42520C8A7000C2B5B /* CarouselViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AA01CB32520C8A7000C2B5B /* CarouselViewModel.swift */; }; @@ -23,7 +24,6 @@ 1AE0179125175F490019F8FA /* ActivityIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0178D25175F490019F8FA /* ActivityIndicator.swift */; }; 1AE0179225175F490019F8FA /* ViewModelType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0178E25175F490019F8FA /* ViewModelType.swift */; }; 1AE017972517607F0019F8FA /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1AE017952517607F0019F8FA /* Main.storyboard */; }; - 1AE017B9251760900019F8FA /* DiscoverNavigator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0179A251760900019F8FA /* DiscoverNavigator.swift */; }; 1AE017BA251760900019F8FA /* DiscoverViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0179B251760900019F8FA /* DiscoverViewController.swift */; }; 1AE017BB251760900019F8FA /* DiscoverViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE0179C251760900019F8FA /* DiscoverViewModel.swift */; }; 1AE017BC251760900019F8FA /* CarouselSectionCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1AE0179E251760900019F8FA /* CarouselSectionCell.xib */; }; @@ -82,6 +82,7 @@ /* Begin PBXFileReference section */ 1A0DE660251C818B00BF3D31 /* LoginActionBinder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginActionBinder.swift; sourceTree = ""; }; 1A0DE662251C81A300BF3D31 /* LoginStateBinder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginStateBinder.swift; sourceTree = ""; }; + 1A1DA8B62529C0E2008A08BE /* DiscoverViewControllerBinder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DiscoverViewControllerBinder.swift; sourceTree = ""; }; 1A8CB9B32519DC6800F25598 /* MovieDetailStateBinder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovieDetailStateBinder.swift; sourceTree = ""; }; 1A8CB9B52519DC7600F25598 /* MovieDetailActionBinder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovieDetailActionBinder.swift; sourceTree = ""; }; 1AA01CB32520C8A7000C2B5B /* CarouselViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CarouselViewModel.swift; sourceTree = ""; }; @@ -98,7 +99,6 @@ 1AE0178D25175F490019F8FA /* ActivityIndicator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActivityIndicator.swift; sourceTree = ""; }; 1AE0178E25175F490019F8FA /* ViewModelType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewModelType.swift; sourceTree = ""; }; 1AE017962517607F0019F8FA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 1AE0179A251760900019F8FA /* DiscoverNavigator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DiscoverNavigator.swift; sourceTree = ""; }; 1AE0179B251760900019F8FA /* DiscoverViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DiscoverViewController.swift; sourceTree = ""; }; 1AE0179C251760900019F8FA /* DiscoverViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DiscoverViewModel.swift; sourceTree = ""; }; 1AE0179E251760900019F8FA /* CarouselSectionCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CarouselSectionCell.xib; sourceTree = ""; }; @@ -260,8 +260,8 @@ 1AE01799251760900019F8FA /* Discover */ = { isa = PBXGroup; children = ( - 1AE0179A251760900019F8FA /* DiscoverNavigator.swift */, 1AE0179B251760900019F8FA /* DiscoverViewController.swift */, + 1A1DA8B62529C0E2008A08BE /* DiscoverViewControllerBinder.swift */, 1AE0179C251760900019F8FA /* DiscoverViewModel.swift */, 1AA01CB32520C8A7000C2B5B /* CarouselViewModel.swift */, 1AE0179D251760900019F8FA /* Views */, @@ -583,7 +583,6 @@ 1AE0179125175F490019F8FA /* ActivityIndicator.swift in Sources */, 1AE017BA251760900019F8FA /* DiscoverViewController.swift in Sources */, 1AE1094A2517671A001E5B01 /* Loading.swift in Sources */, - 1AE017B9251760900019F8FA /* DiscoverNavigator.swift in Sources */, 1AE109472517671A001E5B01 /* Driver.swift in Sources */, 1AE017D9251761610019F8FA /* AppDelegate.swift in Sources */, 1AE0178025175EF50019F8FA /* Movie.swift in Sources */, @@ -626,6 +625,7 @@ 1AE017C7251760900019F8FA /* MovieDetailDriver.swift in Sources */, 1A0DE663251C81A300BF3D31 /* LoginStateBinder.swift in Sources */, 1AE0179225175F490019F8FA /* ViewModelType.swift in Sources */, + 1A1DA8B72529C0E2008A08BE /* DiscoverViewControllerBinder.swift in Sources */, 1AE017BB251760900019F8FA /* DiscoverViewModel.swift in Sources */, 1AE017C9251760900019F8FA /* MovieDetailViewController.swift in Sources */, 1AE1096825177FA4001E5B01 /* NavigationBinder.swift in Sources */, diff --git a/tmdb-rx-driver/tmdb-rx-driver/Application/App.swift b/tmdb-rx-driver/tmdb-rx-driver/Application/App.swift index cfd22bc..14aa113 100644 --- a/tmdb-rx-driver/tmdb-rx-driver/Application/App.swift +++ b/tmdb-rx-driver/tmdb-rx-driver/Application/App.swift @@ -12,11 +12,8 @@ final class App { static let shared = App() func startInterface(in window: UIWindow) { - let discoverNavigationController = UINavigationController() - let discoverNavigator = DiscoverNavigator(navigationController: discoverNavigationController) - let discoverViewModel = DiscoverViewModel(dependencies: DiscoverViewModel.Dependencies(api: TMDBApi(), navigator: discoverNavigator)) - let discoverViewController = UIStoryboard.main.discoverViewController - discoverViewController.viewModel = discoverViewModel + let discoverViewController = DiscoverViewController.Factory.default + let discoverNavigationController = UINavigationController(rootViewController: discoverViewController) let searchNavigationController = UINavigationController(rootViewController: SearchViewController.Factory.default) @@ -25,7 +22,6 @@ final class App { tabBarController.tabBar.tintColor = .white discoverNavigationController.tabBarItem = UITabBarItem(title: "Discover", image: nil, selectedImage: nil) - discoverNavigationController.viewControllers = [discoverViewController] searchNavigationController.tabBarItem = UITabBarItem(title: "Search", image: nil, selectedImage: nil) diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/CarouselViewModel.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/CarouselViewModel.swift index 7dbdbc4..c85fefb 100644 --- a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/CarouselViewModel.swift +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/CarouselViewModel.swift @@ -8,6 +8,13 @@ import Foundation struct CarouselViewModel { + enum DataType { + case movie + case person + case show + } + + let type: DataType let title: String let subtitle: String let items: [CarouselItemViewModel] @@ -16,6 +23,7 @@ struct CarouselViewModel { extension CarouselViewModel { init?(movies: [Movie]?) { guard let movies = movies else { return nil } + self.type = .movie self.title = "Popular movies" self.subtitle = "Most popular in the world" self.items = movies.map { CarouselItemViewModel(movie: $0) } @@ -23,6 +31,7 @@ extension CarouselViewModel { init?(people: [Person]?) { guard let people = people else { return nil } + self.type = .person self.title = "Trending people" self.subtitle = "Find out which celebrities are trending today" self.items = people.map { CarouselItemViewModel(person: $0) } @@ -31,6 +40,7 @@ extension CarouselViewModel { init?(shows: [Show]?) { guard let shows = shows else { return nil } + self.type = .show self.title = "TV shows" self.subtitle = "Latest updates on popular TV shows" self.items = shows.map { CarouselItemViewModel(show: $0) } diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverNavigator.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverNavigator.swift deleted file mode 100644 index a5cfdbc..0000000 --- a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverNavigator.swift +++ /dev/null @@ -1,35 +0,0 @@ -// -// DiscoverNavigator.swift -// tmdb-mvvm-pure -// -// Created by krawiecp-home on 27/01/2019. -// Copyright © 2019 tailec. All rights reserved. -// - -import UIKit - -protocol DiscoverNavigatable { - func navigateToMovieDetailScreen(withMovieId id: Int, api: TMDBApiProvider) - func navigateToPersonDetailScreen() - func navigateToShowDetailScreen() -} - -final class DiscoverNavigator: DiscoverNavigatable { - private let navigationController: UINavigationController - - init(navigationController: UINavigationController) { - self.navigationController = navigationController - } - - func navigateToMovieDetailScreen(withMovieId id: Int, api: TMDBApiProvider) { - navigationController.show(MovieDetailViewController.Factory.default(id: id), sender: nil) - } - - func navigateToPersonDetailScreen() { - - } - - func navigateToShowDetailScreen() { - - } -} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewController.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewController.swift index 992c676..9a73328 100644 --- a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewController.swift +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewController.swift @@ -10,47 +10,35 @@ import UIKit import RxSwift import RxCocoa -final class DiscoverViewController: UIViewController { - var viewModel: DiscoverViewModel! - +final class DiscoverViewController: DisposeViewController { @IBOutlet private (set) var carouselsView: DiscoverMainView! - - private let disposeBag = DisposeBag() - - override func viewDidLoad() { - super.viewDidLoad() - bindViewModel() - } +} - override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - self.navigationController?.setNavigationBarHidden(true, animated: animated) - } - - override var preferredStatusBarStyle: UIStatusBarStyle { - return .lightContent - } - - private func bindViewModel() { - let input = DiscoverViewModel.Input(ready: rx.viewWillAppear.map({ _ in }).asDriver(), - selected: carouselsView.selectedIndex.asDriver(onErrorJustReturn: (0, 0))) - - let output = viewModel.transform(input: input) - - output.loading - .drive(UIApplication.shared.rx.isNetworkActivityIndicatorVisible) - .disposed(by: disposeBag) - - output.results - .drive(onNext: { [weak self] caroselViewModel in - guard let strongSelf = self else { return } - strongSelf.carouselsView.setDataSource(caroselViewModel) - strongSelf.carouselsView.reloadData() - }) - .disposed(by: disposeBag) +extension DiscoverViewController: StaticFactory { + enum Factory { + static var `default`: DiscoverViewController { + let vc = UIStoryboard.main.discoverViewController + let driver = DiscoverDriver(api: TMDBApi.Factory.default) + let binder = DiscoverViewControllerBinder(viewController: vc, driver: driver) + let navigationBinder = NavigationPushBinder.Factory + .push(viewController: vc, + driver: driver.didSelect, + factory: viewControllerFactory) + + vc.bag.insert( + binder, + navigationBinder + ) + return vc + } - output.selected - .drive() - .disposed(by: disposeBag) + private static func viewControllerFactory(selection: DiscoverSelection) -> UIViewController? { + switch selection.item { + case .movie: + return MovieDetailViewController.Factory.default(id: selection.index) + case .person, .show: + return nil + } + } } } diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewControllerBinder.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewControllerBinder.swift new file mode 100644 index 0000000..50884b5 --- /dev/null +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewControllerBinder.swift @@ -0,0 +1,57 @@ +// +// DiscoverViewControllerBinder.swift +// tmdb-rx-driver +// +// Created by Dmytro Shulzhenko on 04.10.2020. +// + +import UIKit + +final class DiscoverViewControllerBinder: ViewControllerBinder { + unowned let viewController: DiscoverViewController + private let driver: DiscoverDriving + + init(viewController: DiscoverViewController, + driver: DiscoverDriving) { + self.viewController = viewController + self.driver = driver + + bind() + } + + func dispose() { } + + func bindLoaded() { + viewController.statusBarStyle = .lightContent + + bag.insert( + viewController.rx.viewWillAppear + .bind(onNext: unowned(self, in: DiscoverViewControllerBinder.viewWillAppear)), + driver.state + .drive(onNext: unowned(self, in: DiscoverViewControllerBinder.apply)) + ) + + let select = viewController.carouselsView + .selectedIndex + .asDriver(onErrorJustReturn: (0, 0)) + + bag.insert( + select.drive(onNext: driver.select) + ) + } + + private func viewWillAppear(_ animated: Bool) { + viewController.navigationController?.setNavigationBarHidden(true, animated: animated) + } + + private func apply(state: DiscoverState) { + switch state { + case .loading, .none: + UIApplication.shared.isNetworkActivityIndicatorVisible = true + case let .results(viewModel): + UIApplication.shared.isNetworkActivityIndicatorVisible = false + viewController.carouselsView.setDataSource(viewModel) + viewController.carouselsView.reloadData() + } + } +} diff --git a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewModel.swift b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewModel.swift index 7feab34..a1ad672 100644 --- a/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewModel.swift +++ b/tmdb-rx-driver/tmdb-rx-driver/Scenes/Discover/DiscoverViewModel.swift @@ -15,82 +15,56 @@ enum DiscoverState { case results([CarouselViewModel]) } -enum DiscoverSelection { - case movie - case person - case show +typealias DiscoverSelection = (item: CarouselViewModel.DataType, index: Int) + +protocol DiscoverDriving { + var didSelect: Driver { get } + var state: Driver { get } + + func select(item: Int, index: Int) } -final class DiscoverViewModel: ViewModelType { - struct Input { - let ready: Driver - let selected: Driver<(Int, Int)> +final class DiscoverDriver: DiscoverDriving { + private let bag = DisposeBag() + private let didSelectRelay = PublishRelay() + private let stateRelay = BehaviorRelay(value: .none) + private var results: (movie: [Movie]?, person: [Person]?, show: [Show]?)? { + didSet { + let values = [CarouselViewModel(movies: results?.movie), + CarouselViewModel(people: results?.person), + CarouselViewModel(shows: results?.show)] + .compactMap { $0 } + stateRelay.accept(.results(values)) + } } + private let api: TMDBApiProvider - struct Output { - let loading: Driver - let results: Driver<[CarouselViewModel]> - let selected: Driver - } + var didSelect: Driver { didSelectRelay.asDriver() } + var state: Driver { stateRelay.asDriver() } - struct Dependencies { - let api: TMDBApiProvider - let navigator: DiscoverNavigatable + init(api: TMDBApiProvider) { + self.api = api + bind() } - private let dependencies: Dependencies - - init(dependencies: Dependencies) { - self.dependencies = dependencies + func select(item: Int, index: Int) { + switch item { + case 0: + guard let id = results?.movie?[index].id else { return } + didSelectRelay.accept((.movie, id)) + case 1: + didSelectRelay.accept((.person, 0)) + case 2: + didSelectRelay.accept((.show, 0)) + default: + break + } } - func transform(input: DiscoverViewModel.Input) -> DiscoverViewModel.Output { - let activityIndicator = ActivityIndicator() - let loading = activityIndicator.asDriver() - - let results = input.ready - .asObservable() - .flatMap { - Observable.zip(self.dependencies.api.fetchPopularMovies(), - self.dependencies.api.fetchPopularPeople(), - self.dependencies.api.fetchPopularShows()) - .trackActivity(activityIndicator) - } - .share() - - let mappedResults = results - .map { movies, people, shows in - return [CarouselViewModel(movies: movies), - CarouselViewModel(people: people), - CarouselViewModel(shows: shows)] - .compactMap { $0 } // If one of the network requests fails, CarouselViewModel is nil and compactMap removes nils from array - // so the data is not displayed - } - .asDriver(onErrorJustReturn: []) - - let selected = input.selected - .asObservable() - .withLatestFrom(results) { ($0, $1 ) } - .do(onNext: { [weak self] (index: (Int, Int), res: ([Movie]?, [Person]?, [Show]?)) in - guard let strongSelf = self else { return } - let (carouselIndex, itemIndex) = index - let (movies, _, _) = res - - switch carouselIndex { - case 0: - guard let id = movies?[itemIndex].id else { return } - strongSelf.dependencies.navigator.navigateToMovieDetailScreen(withMovieId: id, - api: strongSelf.dependencies.api) - case 1: strongSelf.dependencies.navigator.navigateToPersonDetailScreen() - case 2: strongSelf.dependencies.navigator.navigateToShowDetailScreen() - default: return - } - }) - .map { _ in () } - .asDriver(onErrorJustReturn: ()) - - return Output(loading: loading, - results: mappedResults, - selected: selected) + private func bind() { + Observable + .zip(api.fetchPopularMovies(), api.fetchPopularPeople(), api.fetchPopularShows()) + .bind(onNext: set(unowned: self, to: \.results)) + .disposed(by: bag) } } diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/NavigationBinder.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/NavigationBinder.swift index fb8f13d..a9267bb 100644 --- a/tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/NavigationBinder.swift +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/NavigationBinder.swift @@ -46,7 +46,7 @@ typealias NavigationPopBinder = NavigationBinder = NavigationBinder where ViewController: UIViewController, ViewController: DisposeContainer extension NavigationBinder: StaticFactory { - typealias ViewControllerFactory = (Prop) -> UIViewController + typealias ViewControllerFactory = (Prop) -> UIViewController? enum Factory { static func present(viewController: ViewController, diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/Transitioning.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/Transitioning.swift index 7442ba8..5be548d 100644 --- a/tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/Transitioning.swift +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/Binder/Transitioning.swift @@ -18,12 +18,12 @@ final class PresentTransition: Disposable, Transitioning { private let isAnimated: Bool private unowned let viewController: UIViewController private let sourceViewFactory: (() -> UIView)? - private let presentedFactory: (Prop) -> UIViewController + private let presentedFactory: (Prop) -> UIViewController? init(isAnimated: Bool, viewController: UIViewController, sourceViewFactory: (() -> UIView)?, - presentedFactory: @escaping (Prop) -> UIViewController) { + presentedFactory: @escaping (Prop) -> UIViewController?) { self.isAnimated = isAnimated self.viewController = viewController self.sourceViewFactory = sourceViewFactory @@ -33,7 +33,7 @@ final class PresentTransition: Disposable, Transitioning { func dispose() { } func perform(prop: Prop) { - let presented = presentedFactory(prop) + guard let presented = presentedFactory(prop) else { return } presented.popoverPresentationController?.sourceView = sourceViewFactory?() viewController.present(presented, animated: isAnimated) } @@ -58,11 +58,11 @@ final class DismissTransition: Disposable, Transitioning { final class NavigationPushTransition: Disposable, Transitioning { private let isAnimated: Bool private unowned let viewController: UIViewController - private let presentedFactory: (Prop) -> UIViewController + private let presentedFactory: (Prop) -> UIViewController? init(isAnimated: Bool, viewController: UIViewController, - presentedFactory: @escaping (Prop) -> UIViewController) { + presentedFactory: @escaping (Prop) -> UIViewController?) { self.isAnimated = isAnimated self.viewController = viewController self.presentedFactory = presentedFactory @@ -71,8 +71,9 @@ final class NavigationPushTransition: Disposable, Transitioning { func dispose() { } func perform(prop: Prop) { + guard let presented = presentedFactory(prop) else { return } viewController.navigationController? - .pushViewController(presentedFactory(prop), animated: isAnimated) + .pushViewController(presented, animated: isAnimated) } } From 21c84b4c2926abcc942f08c23d757d2bd1c05635 Mon Sep 17 00:00:00 2001 From: Dmitriy Shulzhenko Date: Sun, 4 Oct 2020 15:24:37 +0300 Subject: [PATCH 10/13] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 42bbeea..86a3518 100644 --- a/README.md +++ b/README.md @@ -64,6 +64,7 @@ This repository hosts each sample app in separate directory. | Example | Description | | ------------- | ------------- | | [tmdb-mvvm-rxswift-pure](tmdb-mvvm-rxswift-pure) | Uses [RxSwift](https://github.com/ReactiveX/RxSwift) and observables as binding mechanism between `ViewController` and `ViewModel`. Also, it uses simple navigator pattern for transitions between screens. (README in progress) | +| [tmdb-rx-driver](tmdb-rx-driver) | Uses [RxSwift](https://github.com/ReactiveX/RxSwift) and observables as binding mechanism between `ViewController` and `Driver`. Also, it uses binding techniques to separate logic. [Wiki.](https://github.com/dmsl1805/Cookbook/wiki) | ### Single screen app examples From 23390e557c12d49b95c2e0f8c92eccc33560e598 Mon Sep 17 00:00:00 2001 From: Dmytro Shulzhenko Date: Mon, 24 Jan 2022 10:45:35 +0200 Subject: [PATCH 11/13] cleanup --- .../tmdb-rx-driver/Utils/RxUtils/Latest.swift | 22 ------------------- 1 file changed, 22 deletions(-) diff --git a/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Latest.swift b/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Latest.swift index 6f1f9a4..84e14a9 100644 --- a/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Latest.swift +++ b/tmdb-rx-driver/tmdb-rx-driver/Utils/RxUtils/Latest.swift @@ -15,26 +15,4 @@ extension ObservableType { subscribe(onNext: { element = $0 }).dispose() return element } - - var await: Element { - return latestIfReplayed ?? await(for: { }) - } - - func await(for trigger: () -> Void) -> Element { - let group = DispatchGroup() - - var value: Element! - var disposable: Disposable! - - group.enter() - disposable = subscribe(onNext: { newValue in - value = newValue - disposable.dispose() - group.leave() - }) - trigger() - group.wait() - - return value - } } From 46dbf457f1cf0dd6af2e447434d73c2f3696d29c Mon Sep 17 00:00:00 2001 From: Dmitriy Shulzhenko Date: Fri, 13 May 2022 12:36:21 +0300 Subject: [PATCH 12/13] Update README.md --- tmdb-rx-driver/README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tmdb-rx-driver/README.md b/tmdb-rx-driver/README.md index 8ae8ef3..968f47a 100644 --- a/tmdb-rx-driver/README.md +++ b/tmdb-rx-driver/README.md @@ -12,9 +12,11 @@ This example uses RxSwift Drivers as binding mechanism between `Driver` and `Vie ## Installation Clone the repository: -`git clone git@github.com:tailec/ios-architecture.git` +`git clone git@github.com:dmsl1805/ios-architecture.git` -Navigate to `tmdb-mvvm-pure` directory: +branch `dsml` + +Navigate to `tmdb-rx-driver` directory: `cd tmdb-mvvm-pure` From d41a041766f6fc0c31eb35fad1051179396b540a Mon Sep 17 00:00:00 2001 From: Dmitriy Shulzhenko Date: Mon, 16 May 2022 15:52:56 +0300 Subject: [PATCH 13/13] Update README.md --- tmdb-rx-driver/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmdb-rx-driver/README.md b/tmdb-rx-driver/README.md index 968f47a..5112eff 100644 --- a/tmdb-rx-driver/README.md +++ b/tmdb-rx-driver/README.md @@ -18,7 +18,7 @@ branch `dsml` Navigate to `tmdb-rx-driver` directory: -`cd tmdb-mvvm-pure` +`cd tmdb-rx-driver` Install dependencies:

    4B4pN8N2gQthh>xSWub(@A4 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 sz?X{|i#>Mq<~do)LHP$%1#P3Cc<`X0>>8t> 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ν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%0AcKZ+aynaglG{o>3& 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%0A-;vQ2m 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