Skip to content

Commit fba01b3

Browse files
committed
Refactor for better code readability
1 parent 872892a commit fba01b3

File tree

73 files changed

+434
-742
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+434
-742
lines changed

ExampleMVVM/Application/AppAppearance.swift

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,3 @@
1-
//
2-
// AppAppearance.swift
3-
// ExampleMVVM
4-
//
5-
// Created by Oleh on 23.09.18.
6-
//
7-
81
import Foundation
92
import UIKit
103

ExampleMVVM/Application/AppConfigurations.swift

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,3 @@
1-
//
2-
// AppConfiguration.swift
3-
// ExampleMVVM
4-
//
5-
// Created by Oleh Kudinov on 25.02.19.
6-
//
7-
81
import Foundation
92

103
final class AppConfiguration {

ExampleMVVM/Application/AppDelegate.swift

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,3 @@
1-
//
2-
// AppDelegate.swift
3-
// ExampleMVVM
4-
//
5-
// Created by Oleh Kudinov on 01.10.18.
6-
//
7-
81
import UIKit
92

103
@UIApplicationMain

ExampleMVVM/Application/AppFlowCoordinator.swift

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,14 @@
1-
//
2-
// AppFlowCoordinator.swift
3-
// ExampleMVVM
4-
//
5-
// Created by Oleh Kudinov on 03.03.19.
6-
//
7-
81
import UIKit
92

103
final class AppFlowCoordinator {
114

125
var navigationController: UINavigationController
136
private let appDIContainer: AppDIContainer
147

15-
init(navigationController: UINavigationController,
16-
appDIContainer: AppDIContainer) {
8+
init(
9+
navigationController: UINavigationController,
10+
appDIContainer: AppDIContainer
11+
) {
1712
self.navigationController = navigationController
1813
self.appDIContainer = appDIContainer
1914
}
Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,3 @@
1-
//
2-
// DIContainer.swift
3-
// ExampleMVVM
4-
//
5-
// Created by Oleh Kudinov on 01.10.18.
6-
//
7-
81
import Foundation
92

103
final class AppDIContainer {
@@ -13,23 +6,31 @@ final class AppDIContainer {
136

147
// MARK: - Network
158
lazy var apiDataTransferService: DataTransferService = {
16-
let config = ApiDataNetworkConfig(baseURL: URL(string: appConfiguration.apiBaseURL)!,
17-
queryParameters: ["api_key": appConfiguration.apiKey,
18-
"language": NSLocale.preferredLanguages.first ?? "en"])
9+
let config = ApiDataNetworkConfig(
10+
baseURL: URL(string: appConfiguration.apiBaseURL)!,
11+
queryParameters: [
12+
"api_key": appConfiguration.apiKey,
13+
"language": NSLocale.preferredLanguages.first ?? "en"
14+
]
15+
)
1916

2017
let apiDataNetwork = DefaultNetworkService(config: config)
2118
return DefaultDataTransferService(with: apiDataNetwork)
2219
}()
2320
lazy var imageDataTransferService: DataTransferService = {
24-
let config = ApiDataNetworkConfig(baseURL: URL(string: appConfiguration.imagesBaseURL)!)
21+
let config = ApiDataNetworkConfig(
22+
baseURL: URL(string: appConfiguration.imagesBaseURL)!
23+
)
2524
let imagesDataNetwork = DefaultNetworkService(config: config)
2625
return DefaultDataTransferService(with: imagesDataNetwork)
2726
}()
2827

2928
// MARK: - DIContainers of scenes
3029
func makeMoviesSceneDIContainer() -> MoviesSceneDIContainer {
31-
let dependencies = MoviesSceneDIContainer.Dependencies(apiDataTransferService: apiDataTransferService,
32-
imageDataTransferService: imageDataTransferService)
30+
let dependencies = MoviesSceneDIContainer.Dependencies(
31+
apiDataTransferService: apiDataTransferService,
32+
imageDataTransferService: imageDataTransferService
33+
)
3334
return MoviesSceneDIContainer(dependencies: dependencies)
3435
}
3536
}

ExampleMVVM/Application/DIContainer/MoviesSceneDIContainer.swift

Lines changed: 60 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,7 @@
1-
//
2-
// MoviesSceneDIContainer.swift
3-
// ExampleMVVM
4-
//
5-
// Created by Oleh Kudinov on 03.03.19.
6-
//
7-
81
import UIKit
92
import SwiftUI
103

11-
final class MoviesSceneDIContainer {
4+
final class MoviesSceneDIContainer: MoviesSearchFlowCoordinatorDependencies {
125

136
struct Dependencies {
147
let apiDataTransferService: DataTransferService
@@ -27,77 +20,107 @@ final class MoviesSceneDIContainer {
2720

2821
// MARK: - Use Cases
2922
func makeSearchMoviesUseCase() -> SearchMoviesUseCase {
30-
return DefaultSearchMoviesUseCase(moviesRepository: makeMoviesRepository(),
31-
moviesQueriesRepository: makeMoviesQueriesRepository())
23+
DefaultSearchMoviesUseCase(
24+
moviesRepository: makeMoviesRepository(),
25+
moviesQueriesRepository: makeMoviesQueriesRepository()
26+
)
3227
}
3328

34-
func makeFetchRecentMovieQueriesUseCase(requestValue: FetchRecentMovieQueriesUseCase.RequestValue,
35-
completion: @escaping (FetchRecentMovieQueriesUseCase.ResultValue) -> Void) -> UseCase {
36-
return FetchRecentMovieQueriesUseCase(requestValue: requestValue,
37-
completion: completion,
38-
moviesQueriesRepository: makeMoviesQueriesRepository()
29+
func makeFetchRecentMovieQueriesUseCase(
30+
requestValue: FetchRecentMovieQueriesUseCase.RequestValue,
31+
completion: @escaping (FetchRecentMovieQueriesUseCase.ResultValue) -> Void
32+
) -> UseCase {
33+
FetchRecentMovieQueriesUseCase(
34+
requestValue: requestValue,
35+
completion: completion,
36+
moviesQueriesRepository: makeMoviesQueriesRepository()
3937
)
4038
}
4139

4240
// MARK: - Repositories
4341
func makeMoviesRepository() -> MoviesRepository {
44-
return DefaultMoviesRepository(dataTransferService: dependencies.apiDataTransferService, cache: moviesResponseCache)
42+
DefaultMoviesRepository(
43+
dataTransferService: dependencies.apiDataTransferService,
44+
cache: moviesResponseCache
45+
)
4546
}
4647
func makeMoviesQueriesRepository() -> MoviesQueriesRepository {
47-
return DefaultMoviesQueriesRepository(dataTransferService: dependencies.apiDataTransferService,
48-
moviesQueriesPersistentStorage: moviesQueriesStorage)
48+
DefaultMoviesQueriesRepository(
49+
dataTransferService: dependencies.apiDataTransferService,
50+
moviesQueriesPersistentStorage: moviesQueriesStorage
51+
)
4952
}
5053
func makePosterImagesRepository() -> PosterImagesRepository {
51-
return DefaultPosterImagesRepository(dataTransferService: dependencies.imageDataTransferService)
54+
DefaultPosterImagesRepository(
55+
dataTransferService: dependencies.imageDataTransferService
56+
)
5257
}
5358

5459
// MARK: - Movies List
5560
func makeMoviesListViewController(actions: MoviesListViewModelActions) -> MoviesListViewController {
56-
return MoviesListViewController.create(with: makeMoviesListViewModel(actions: actions),
57-
posterImagesRepository: makePosterImagesRepository())
61+
MoviesListViewController.create(
62+
with: makeMoviesListViewModel(actions: actions),
63+
posterImagesRepository: makePosterImagesRepository()
64+
)
5865
}
5966

6067
func makeMoviesListViewModel(actions: MoviesListViewModelActions) -> MoviesListViewModel {
61-
return DefaultMoviesListViewModel(searchMoviesUseCase: makeSearchMoviesUseCase(),
62-
actions: actions)
68+
DefaultMoviesListViewModel(
69+
searchMoviesUseCase: makeSearchMoviesUseCase(),
70+
actions: actions
71+
)
6372
}
6473

6574
// MARK: - Movie Details
6675
func makeMoviesDetailsViewController(movie: Movie) -> UIViewController {
67-
return MovieDetailsViewController.create(with: makeMoviesDetailsViewModel(movie: movie))
76+
MovieDetailsViewController.create(
77+
with: makeMoviesDetailsViewModel(movie: movie)
78+
)
6879
}
6980

7081
func makeMoviesDetailsViewModel(movie: Movie) -> MovieDetailsViewModel {
71-
return DefaultMovieDetailsViewModel(movie: movie,
72-
posterImagesRepository: makePosterImagesRepository())
82+
DefaultMovieDetailsViewModel(
83+
movie: movie,
84+
posterImagesRepository: makePosterImagesRepository()
85+
)
7386
}
7487

7588
// MARK: - Movies Queries Suggestions List
7689
func makeMoviesQueriesSuggestionsListViewController(didSelect: @escaping MoviesQueryListViewModelDidSelectAction) -> UIViewController {
7790
if #available(iOS 13.0, *) { // SwiftUI
78-
let view = MoviesQueryListView(viewModelWrapper: makeMoviesQueryListViewModelWrapper(didSelect: didSelect))
91+
let view = MoviesQueryListView(
92+
viewModelWrapper: makeMoviesQueryListViewModelWrapper(didSelect: didSelect)
93+
)
7994
return UIHostingController(rootView: view)
8095
} else { // UIKit
81-
return MoviesQueriesTableViewController.create(with: makeMoviesQueryListViewModel(didSelect: didSelect))
96+
return MoviesQueriesTableViewController.create(
97+
with: makeMoviesQueryListViewModel(didSelect: didSelect)
98+
)
8299
}
83100
}
84101

85102
func makeMoviesQueryListViewModel(didSelect: @escaping MoviesQueryListViewModelDidSelectAction) -> MoviesQueryListViewModel {
86-
return DefaultMoviesQueryListViewModel(numberOfQueriesToShow: 10,
87-
fetchRecentMovieQueriesUseCaseFactory: makeFetchRecentMovieQueriesUseCase,
88-
didSelect: didSelect)
103+
DefaultMoviesQueryListViewModel(
104+
numberOfQueriesToShow: 10,
105+
fetchRecentMovieQueriesUseCaseFactory: makeFetchRecentMovieQueriesUseCase,
106+
didSelect: didSelect
107+
)
89108
}
90109

91110
@available(iOS 13.0, *)
92-
func makeMoviesQueryListViewModelWrapper(didSelect: @escaping MoviesQueryListViewModelDidSelectAction) -> MoviesQueryListViewModelWrapper {
93-
return MoviesQueryListViewModelWrapper(viewModel: makeMoviesQueryListViewModel(didSelect: didSelect))
111+
func makeMoviesQueryListViewModelWrapper(
112+
didSelect: @escaping MoviesQueryListViewModelDidSelectAction
113+
) -> MoviesQueryListViewModelWrapper {
114+
MoviesQueryListViewModelWrapper(
115+
viewModel: makeMoviesQueryListViewModel(didSelect: didSelect)
116+
)
94117
}
95118

96119
// MARK: - Flow Coordinators
97120
func makeMoviesSearchFlowCoordinator(navigationController: UINavigationController) -> MoviesSearchFlowCoordinator {
98-
return MoviesSearchFlowCoordinator(navigationController: navigationController,
99-
dependencies: self)
121+
MoviesSearchFlowCoordinator(
122+
navigationController: navigationController,
123+
dependencies: self
124+
)
100125
}
101126
}
102-
103-
extension MoviesSceneDIContainer: MoviesSearchFlowCoordinatorDependencies {}

ExampleMVVM/Common/Cancellable.swift

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,5 @@
1-
//
2-
// Cancellable.swift
3-
// ExampleMVVM
4-
//
5-
// Created by Oleh Kudinov on 10.03.19.
6-
//
7-
81
import Foundation
92

10-
public protocol Cancellable {
3+
protocol Cancellable {
114
func cancel()
125
}

ExampleMVVM/Common/ConnectionError.swift

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,10 @@
1-
//
2-
// ConnectionError.swift
3-
// ExampleMVVM
4-
//
5-
// Created by Oleh Kudinov on 01.10.19.
6-
//
7-
81
import Foundation
92

10-
public protocol ConnectionError: Error {
3+
protocol ConnectionError: Error {
114
var isInternetConnectionError: Bool { get }
125
}
136

14-
public extension Error {
7+
extension Error {
158
var isInternetConnectionError: Bool {
169
guard let error = self as? ConnectionError, error.isInternetConnectionError else {
1710
return false
Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
1-
//
2-
// APIEndpoints.swift
3-
// ExampleMVVM
4-
//
5-
// Created by Oleh Kudinov on 01.10.18.
6-
//
7-
81
import Foundation
92

103
struct APIEndpoints {
114

125
static func getMovies(with moviesRequestDTO: MoviesRequestDTO) -> Endpoint<MoviesResponseDTO> {
136

14-
return Endpoint(path: "3/search/movie",
15-
method: .get,
16-
queryParametersEncodable: moviesRequestDTO)
7+
return Endpoint(
8+
path: "3/search/movie",
9+
method: .get,
10+
queryParametersEncodable: moviesRequestDTO
11+
)
1712
}
1813

1914
static func getMoviePoster(path: String, width: Int) -> Endpoint<Data> {
2015

2116
let sizes = [92, 154, 185, 342, 500, 780]
22-
let closestWidth = sizes.enumerated().min { abs($0.1 - width) < abs($1.1 - width) }?.element ?? sizes.first!
17+
let closestWidth = sizes
18+
.enumerated()
19+
.min { abs($0.1 - width) < abs($1.1 - width) }?
20+
.element ?? sizes.first!
2321

24-
return Endpoint(path: "t/p/w\(closestWidth)\(path)",
25-
method: .get,
26-
responseDecoder: RawDataResponseDecoder())
22+
return Endpoint(
23+
path: "t/p/w\(closestWidth)\(path)",
24+
method: .get,
25+
responseDecoder: RawDataResponseDecoder()
26+
)
2727
}
2828
}

ExampleMVVM/Data/Network/DataMapping/MoviesRequestDTO+Mapping.swift

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,3 @@
1-
//
2-
// MoviesRequestDTO+Mapping.swift
3-
// ExampleMVVM
4-
//
5-
// Created by Oleh Kudinov on 22/03/2020.
6-
//
7-
81
import Foundation
92

103
struct MoviesRequestDTO: Encodable {

0 commit comments

Comments
 (0)