Skip to content

Commit bf61ec8

Browse files
committed
Rename closures to actions
1 parent 3151ead commit bf61ec8

File tree

5 files changed

+26
-26
lines changed

5 files changed

+26
-26
lines changed

ExampleMVVM/Application/DIContainer/MoviesSceneDIContainer.swift

+7-7
Original file line numberDiff line numberDiff line change
@@ -52,14 +52,14 @@ final class MoviesSceneDIContainer {
5252
}
5353

5454
// MARK: - Movies List
55-
func makeMoviesListViewController(closures: MoviesListViewModelClosures) -> MoviesListViewController {
56-
return MoviesListViewController.create(with: makeMoviesListViewModel(closures: closures),
55+
func makeMoviesListViewController(actions: MoviesListViewModelActions) -> MoviesListViewController {
56+
return MoviesListViewController.create(with: makeMoviesListViewModel(actions: actions),
5757
posterImagesRepository: makePosterImagesRepository())
5858
}
5959

60-
func makeMoviesListViewModel(closures: MoviesListViewModelClosures) -> MoviesListViewModel {
60+
func makeMoviesListViewModel(actions: MoviesListViewModelActions) -> MoviesListViewModel {
6161
return DefaultMoviesListViewModel(searchMoviesUseCase: makeSearchMoviesUseCase(),
62-
closures: closures)
62+
actions: actions)
6363
}
6464

6565
// MARK: - Movie Details
@@ -73,7 +73,7 @@ final class MoviesSceneDIContainer {
7373
}
7474

7575
// MARK: - Movies Queries Suggestions List
76-
func makeMoviesQueriesSuggestionsListViewController(didSelect: @escaping MoviesQueryListViewModelDidSelectClosure) -> UIViewController {
76+
func makeMoviesQueriesSuggestionsListViewController(didSelect: @escaping MoviesQueryListViewModelDidSelectAction) -> UIViewController {
7777
if #available(iOS 13.0, *) { // SwiftUI
7878
let view = MoviesQueryListView(viewModelWrapper: makeMoviesQueryListViewModelWrapper(didSelect: didSelect))
7979
return UIHostingController(rootView: view)
@@ -82,14 +82,14 @@ final class MoviesSceneDIContainer {
8282
}
8383
}
8484

85-
func makeMoviesQueryListViewModel(didSelect: @escaping MoviesQueryListViewModelDidSelectClosure) -> MoviesQueryListViewModel {
85+
func makeMoviesQueryListViewModel(didSelect: @escaping MoviesQueryListViewModelDidSelectAction) -> MoviesQueryListViewModel {
8686
return DefaultMoviesQueryListViewModel(numberOfQueriesToShow: 10,
8787
fetchRecentMovieQueriesUseCaseFactory: makeFetchRecentMovieQueriesUseCase,
8888
didSelect: didSelect)
8989
}
9090

9191
@available(iOS 13.0, *)
92-
func makeMoviesQueryListViewModelWrapper(didSelect: @escaping MoviesQueryListViewModelDidSelectClosure) -> MoviesQueryListViewModelWrapper {
92+
func makeMoviesQueryListViewModelWrapper(didSelect: @escaping MoviesQueryListViewModelDidSelectAction) -> MoviesQueryListViewModelWrapper {
9393
return MoviesQueryListViewModelWrapper(viewModel: makeMoviesQueryListViewModel(didSelect: didSelect))
9494
}
9595

ExampleMVVM/Presentation/MoviesScene/Flows/MoviesSearchFlowCoordinator.swift

+7-7
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
import UIKit
99

1010
protocol MoviesSearchFlowCoordinatorDependencies {
11-
func makeMoviesListViewController(closures: MoviesListViewModelClosures) -> MoviesListViewController
11+
func makeMoviesListViewController(actions: MoviesListViewModelActions) -> MoviesListViewController
1212
func makeMoviesDetailsViewController(movie: Movie) -> UIViewController
13-
func makeMoviesQueriesSuggestionsListViewController(didSelect: @escaping MoviesQueryListViewModelDidSelectClosure) -> UIViewController
13+
func makeMoviesQueriesSuggestionsListViewController(didSelect: @escaping MoviesQueryListViewModelDidSelectAction) -> UIViewController
1414
}
1515

1616
class MoviesSearchFlowCoordinator {
@@ -28,11 +28,11 @@ class MoviesSearchFlowCoordinator {
2828
}
2929

3030
func start() {
31-
// Note: here we keep strong reference with closures, this way this flow do not need to be strong referenced
32-
let closures = MoviesListViewModelClosures(showMovieDetails: showMovieDetails,
33-
showMovieQueriesSuggestions: showMovieQueriesSuggestions,
34-
closeMovieQueriesSuggestions: closeMovieQueriesSuggestions)
35-
let vc = dependencies.makeMoviesListViewController(closures: closures)
31+
// Note: here we keep strong reference with actions, this way this flow do not need to be strong referenced
32+
let actions = MoviesListViewModelActions(showMovieDetails: showMovieDetails,
33+
showMovieQueriesSuggestions: showMovieQueriesSuggestions,
34+
closeMovieQueriesSuggestions: closeMovieQueriesSuggestions)
35+
let vc = dependencies.makeMoviesListViewController(actions: actions)
3636

3737
navigationController?.pushViewController(vc, animated: false)
3838
moviesListVC = vc

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

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

88
import Foundation
99

10-
struct MoviesListViewModelClosures {
10+
struct MoviesListViewModelActions {
1111
/// Note: if you would need to edit movie inside Details screen and update this Movies List screen with updated movie then you would need this closure:
1212
/// showMovieDetails: (Movie, @escaping (_ updated: Movie) -> Void) -> Void
1313
let showMovieDetails: (Movie) -> Void
@@ -47,7 +47,7 @@ protocol MoviesListViewModel: MoviesListViewModelInput, MoviesListViewModelOutpu
4747
final class DefaultMoviesListViewModel: MoviesListViewModel {
4848

4949
private let searchMoviesUseCase: SearchMoviesUseCase
50-
private let closures: MoviesListViewModelClosures?
50+
private let actions: MoviesListViewModelActions?
5151

5252
var currentPage: Int = 0
5353
var totalPageCount: Int = 1
@@ -72,9 +72,9 @@ final class DefaultMoviesListViewModel: MoviesListViewModel {
7272
// MARK: - Init
7373

7474
init(searchMoviesUseCase: SearchMoviesUseCase,
75-
closures: MoviesListViewModelClosures? = nil) {
75+
actions: MoviesListViewModelActions? = nil) {
7676
self.searchMoviesUseCase = searchMoviesUseCase
77-
self.closures = closures
77+
self.actions = actions
7878
}
7979

8080
// MARK: - Private
@@ -149,15 +149,15 @@ extension DefaultMoviesListViewModel {
149149
}
150150

151151
func showQueriesSuggestions() {
152-
closures?.showMovieQueriesSuggestions(update(movieQuery:))
152+
actions?.showMovieQueriesSuggestions(update(movieQuery:))
153153
}
154154

155155
func closeQueriesSuggestions() {
156-
closures?.closeMovieQueriesSuggestions()
156+
actions?.closeMovieQueriesSuggestions()
157157
}
158158

159159
func didSelectItem(at index: Int) {
160-
closures?.showMovieDetails(pages.movies[index])
160+
actions?.showMovieDetails(pages.movies[index])
161161
}
162162
}
163163

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

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

88
import Foundation
99

10-
typealias MoviesQueryListViewModelDidSelectClosure = (MovieQuery) -> Void
10+
typealias MoviesQueryListViewModelDidSelectAction = (MovieQuery) -> Void
1111

1212
protocol MoviesQueryListViewModelInput {
1313
func viewWillAppear()
@@ -29,14 +29,14 @@ final class DefaultMoviesQueryListViewModel: MoviesQueryListViewModel {
2929

3030
private let numberOfQueriesToShow: Int
3131
private let fetchRecentMovieQueriesUseCaseFactory: FetchRecentMovieQueriesUseCaseFactory
32-
private let didSelect: MoviesQueryListViewModelDidSelectClosure?
32+
private let didSelect: MoviesQueryListViewModelDidSelectAction?
3333

3434
// MARK: - OUTPUT
3535
let items: Observable<[MoviesQueryListItemViewModel]> = Observable([])
3636

3737
init(numberOfQueriesToShow: Int,
3838
fetchRecentMovieQueriesUseCaseFactory: @escaping FetchRecentMovieQueriesUseCaseFactory,
39-
didSelect: MoviesQueryListViewModelDidSelectClosure? = nil) {
39+
didSelect: MoviesQueryListViewModelDidSelectAction? = nil) {
4040
self.numberOfQueriesToShow = numberOfQueriesToShow
4141
self.fetchRecentMovieQueriesUseCaseFactory = fetchRecentMovieQueriesUseCaseFactory
4242
self.didSelect = didSelect

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_thenCallDidSelectClosure() {
80+
func test_whenDidSelectQueryEventIsReceived_thenCallDidSelectAction() {
8181
// given
8282
let selectedQueryItem = MovieQuery(query: "query1")
8383
var actionMovieQuery: MovieQuery?
8484
let expectation = self.expectation(description: "Delegate notified")
85-
let didSelect: MoviesQueryListViewModelDidSelectClosure = { movieQuery in
85+
let didSelect: MoviesQueryListViewModelDidSelectAction = { movieQuery in
8686
actionMovieQuery = movieQuery
8787
expectation.fulfill()
8888
}

0 commit comments

Comments
 (0)