Skip to content

Commit aacaad6

Browse files
committed
Refactor
1 parent e83bf8c commit aacaad6

File tree

8 files changed

+28
-27
lines changed

8 files changed

+28
-27
lines changed

ExampleMVVM.xcodeproj/project.pbxproj

+4-4
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
1F05A6CC2220A2CB001E2801 /* SearchMoviesUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F05A6CB2220A2CB001E2801 /* SearchMoviesUseCase.swift */; };
1212
1F0CEFCF23436B67004141FA /* ConnectionError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F0CEFCE23436B67004141FA /* ConnectionError.swift */; };
1313
1F0CEFD023436B8B004141FA /* ConnectionError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F0CEFCE23436B67004141FA /* ConnectionError.swift */; };
14-
1F16031D2426919300C173C6 /* AppMainFlowCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F16031C2426919300C173C6 /* AppMainFlowCoordinator.swift */; };
14+
1F16031D2426919300C173C6 /* AppFlowCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F16031C2426919300C173C6 /* AppFlowCoordinator.swift */; };
1515
1F160324242693DD00C173C6 /* MoviesSearchFlowCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F160323242693DD00C173C6 /* MoviesSearchFlowCoordinator.swift */; };
1616
1F1CD656222368CA00B0143C /* AppConfigurations.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F1CD655222368CA00B0143C /* AppConfigurations.swift */; };
1717
1F1FC48922E3693100BCBA8D /* NetworkService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F1FC48522E3693100BCBA8D /* NetworkService.swift */; };
@@ -126,7 +126,7 @@
126126
1F02DE3622F8507500E40C3A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
127127
1F05A6CB2220A2CB001E2801 /* SearchMoviesUseCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchMoviesUseCase.swift; sourceTree = "<group>"; };
128128
1F0CEFCE23436B67004141FA /* ConnectionError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConnectionError.swift; sourceTree = "<group>"; };
129-
1F16031C2426919300C173C6 /* AppMainFlowCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppMainFlowCoordinator.swift; sourceTree = "<group>"; };
129+
1F16031C2426919300C173C6 /* AppFlowCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppFlowCoordinator.swift; sourceTree = "<group>"; };
130130
1F160323242693DD00C173C6 /* MoviesSearchFlowCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MoviesSearchFlowCoordinator.swift; sourceTree = "<group>"; };
131131
1F1CD655222368CA00B0143C /* AppConfigurations.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppConfigurations.swift; sourceTree = "<group>"; };
132132
1F1FC48522E3693100BCBA8D /* NetworkService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetworkService.swift; sourceTree = "<group>"; };
@@ -508,7 +508,7 @@
508508
1FA5338C201E1FDE00747E55 /* AppDelegate.swift */,
509509
FC2B715B2156FF93002BD59E /* AppAppearance.swift */,
510510
1F1CD655222368CA00B0143C /* AppConfigurations.swift */,
511-
1F16031C2426919300C173C6 /* AppMainFlowCoordinator.swift */,
511+
1F16031C2426919300C173C6 /* AppFlowCoordinator.swift */,
512512
1F84DECD2300673A00139F73 /* DIContainer */,
513513
);
514514
path = Application;
@@ -920,7 +920,7 @@
920920
buildActionMask = 2147483647;
921921
files = (
922922
1FEED0F02023576A000F4EAA /* Alertable.swift in Sources */,
923-
1F16031D2426919300C173C6 /* AppMainFlowCoordinator.swift in Sources */,
923+
1F16031D2426919300C173C6 /* AppFlowCoordinator.swift in Sources */,
924924
1F53E2B823125F71008D6A05 /* MoviesQueryListItemViewModel.swift in Sources */,
925925
FC2B715C2156FF93002BD59E /* AppAppearance.swift in Sources */,
926926
1F1FC48922E3693100BCBA8D /* NetworkService.swift in Sources */,

ExampleMVVM/Application/AppDelegate.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import UIKit
1111
class AppDelegate: UIResponder, UIApplicationDelegate {
1212

1313
let appDIContainer = AppDIContainer()
14-
var appFlowCoordinator: AppMainFlowCoordinator?
14+
var appFlowCoordinator: AppFlowCoordinator?
1515
var window: UIWindow?
1616

1717
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
@@ -22,8 +22,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
2222
let navigationController = UINavigationController()
2323

2424
window?.rootViewController = navigationController
25-
appFlowCoordinator = AppMainFlowCoordinator(navigationController: navigationController,
26-
appDIContainer: appDIContainer)
25+
appFlowCoordinator = AppFlowCoordinator(navigationController: navigationController,
26+
appDIContainer: appDIContainer)
2727
appFlowCoordinator?.startMoviesSearchFlow()
2828
window?.makeKeyAndVisible()
2929

ExampleMVVM/Application/AppMainFlowCoordinator.swift renamed to ExampleMVVM/Application/AppFlowCoordinator.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
import UIKit
99

10-
class AppMainFlowCoordinator {
10+
class AppFlowCoordinator {
1111

1212
var navigationController: UINavigationController
1313
private let appDIContainer: AppDIContainer

ExampleMVVM/Presentation/MoviesScene/FlowCoordinator/MoviesSearchFlowCoordinator.swift

+14-12
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ class MoviesSearchFlowCoordinator {
1818
private let navigationController: UINavigationController
1919
private let dependencies: MoviesSearchFlowCoordinatorDependencies
2020

21-
private weak var moviesListViewController: MoviesListViewController?
22-
private weak var moviesQueriesSuggestionsView: UIViewController?
21+
private weak var moviesListVC: MoviesListViewController?
22+
private weak var moviesQueriesSuggestionsVC: UIViewController?
2323

2424
init(navigationController: UINavigationController,
2525
dependencies: MoviesSearchFlowCoordinatorDependencies) {
@@ -35,28 +35,30 @@ class MoviesSearchFlowCoordinator {
3535
let vc = dependencies.makeMoviesListViewController(closures: closures)
3636

3737
navigationController.pushViewController(vc, animated: false)
38-
moviesListViewController = vc
38+
moviesListVC = vc
3939
}
4040

4141
private func showMovieDetails(movie: Movie) {
4242
let vc = dependencies.makeMoviesDetailsViewController(movie: movie)
4343
navigationController.pushViewController(vc, animated: true)
4444
}
4545

46-
private func showMovieQueriesSuggestions(selectMovieQuery: @escaping (MovieQuery) -> Void) {
47-
guard let moviesListViewController = moviesListViewController,
46+
private func showMovieQueriesSuggestions(didSelect: @escaping (MovieQuery) -> Void) {
47+
guard let moviesListViewController = moviesListVC, moviesQueriesSuggestionsVC == nil,
4848
let container = moviesListViewController.suggestionsListContainer else { return }
49-
let closures = MoviesQueryListViewModelClosures(selectMovieQuery: selectMovieQuery)
50-
let vc = dependencies.makeMoviesQueriesSuggestionsListViewController(closures: closures)
49+
50+
let vc = dependencies.makeMoviesQueriesSuggestionsListViewController(closures:
51+
MoviesQueryListViewModelClosures(didSelect: didSelect)
52+
)
53+
5154
moviesListViewController.add(child: vc, container: container)
52-
vc.view.frame = moviesListViewController.view.bounds
53-
moviesQueriesSuggestionsView = vc
55+
moviesQueriesSuggestionsVC = vc
5456
container.isHidden = false
5557
}
5658

5759
private func closeMovieQueriesSuggestions() {
58-
moviesQueriesSuggestionsView?.remove()
59-
moviesQueriesSuggestionsView = nil
60-
moviesListViewController?.suggestionsListContainer.isHidden = true
60+
moviesQueriesSuggestionsVC?.remove()
61+
moviesQueriesSuggestionsVC = nil
62+
moviesListVC?.suggestionsListContainer.isHidden = true
6163
}
6264
}

ExampleMVVM/Presentation/MoviesScene/MoviesList/ViewModel/MoviesListViewModel.swift

+1-3
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,7 @@ extension DefaultMoviesListViewModel {
140140
}
141141

142142
func showQueriesSuggestions() {
143-
closures?.showMovieQueriesSuggestions { [weak self] query in
144-
self?.update(movieQuery: query)
145-
}
143+
closures?.showMovieQueriesSuggestions(update(movieQuery:))
146144
}
147145

148146
func closeQueriesSuggestions() {

ExampleMVVM/Presentation/MoviesScene/MoviesQueriesList/ViewModel/MoviesQueryListViewModel.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import Foundation
99

1010
struct MoviesQueryListViewModelClosures {
11-
var selectMovieQuery: (MovieQuery) -> Void
11+
var didSelect: (MovieQuery) -> Void
1212
}
1313

1414
protocol MoviesQueryListViewModelInput {
@@ -67,6 +67,6 @@ extension DefaultMoviesQueryListViewModel {
6767
}
6868

6969
func didSelect(item: MoviesQueryListItemViewModel) {
70-
closures?.selectMovieQuery(MovieQuery(query: item.query))
70+
closures?.didSelect(MovieQuery(query: item.query))
7171
}
7272
}

ExampleMVVM/Presentation/Utils/Extensions/UIViewController+AddChild.swift

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ extension UIViewController {
1111

1212
func add(child: UIViewController, container: UIView) {
1313
addChild(child)
14+
child.view.frame = container.bounds
1415
container.addSubview(child.view)
1516
child.didMove(toParent: self)
1617
}

ExampleMVVMTests/Presentation/MoviesScene/MoviesQueriesListViewModelTests.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -77,12 +77,12 @@ class MoviesQueriesListViewModelTests: XCTestCase {
7777
XCTAssertTrue(viewModel.items.value.isEmpty)
7878
}
7979

80-
func test_whenDidSelectQueryEventIsReceived_thenCallAction() {
80+
func test_whenDidSelectQueryEventIsReceived_thenCallDidSelectClosure() {
8181
// given
8282
let selectedQueryItem = MovieQuery(query: "query1")
8383
var actionMovieQuery: MovieQuery?
8484
let expectation = self.expectation(description: "Delegate notified")
85-
let closures = MoviesQueryListViewModelClosures(selectMovieQuery: { movieQuery in
85+
let closures = MoviesQueryListViewModelClosures(didSelect: { movieQuery in
8686
actionMovieQuery = movieQuery
8787
expectation.fulfill()
8888
})

0 commit comments

Comments
 (0)