@@ -40,22 +40,17 @@ final class MoviesListViewController: UIViewController, StoryboardInstantiable,
40
40
}
41
41
42
42
private func bind( to viewModel: MoviesListViewModel ) {
43
- viewModel. items. observe ( on: self ) { [ weak self] _ in self ? . moviesTableViewController ? . reload ( ) }
44
- viewModel. query. observe ( on: self ) { [ weak self] in self ? . updateSearchController ( query: $0 ) }
45
- viewModel. error . observe ( on: self ) { [ weak self] in self ? . showError ( $0 ) }
46
- viewModel. loadingType . observe ( on: self ) { [ weak self] in self ? . updateViewsVisibility ( loadingType : $0 ) }
43
+ viewModel. items. observe ( on: self ) { [ weak self] items in self ? . updateItems ( items ) }
44
+ viewModel. query. observe ( on: self ) { [ weak self] query in self ? . updateSearchQuery ( query) }
45
+ viewModel. loading . observe ( on: self ) { [ weak self] loading in self ? . updateLoading ( loading ) }
46
+ viewModel. error . observe ( on: self ) { [ weak self] error in self ? . showError ( error ) }
47
47
}
48
48
49
49
override func viewWillDisappear( _ animated: Bool ) {
50
50
super. viewWillDisappear ( animated)
51
51
searchController. isActive = false
52
52
}
53
53
54
- private func updateSearchController( query: String ) {
55
- searchController. isActive = false
56
- searchController. searchBar. text = query
57
- }
58
-
59
54
override func prepare( for segue: UIStoryboardSegue , sender: Any ? ) {
60
55
if segue. identifier == String ( describing: MoviesListTableViewController . self) ,
61
56
let destinationVC = segue. destination as? MoviesListTableViewController {
@@ -78,36 +73,45 @@ final class MoviesListViewController: UIViewController, StoryboardInstantiable,
78
73
BlackStyleNavigationBarBehavior ( ) ] )
79
74
}
80
75
81
- private func showError( _ error: String ) {
82
- guard !error. isEmpty else { return }
83
- showAlert ( title: viewModel. errorTitle, message: error)
76
+ private func updateItems( _ items: [ MoviesListItemViewModel ] ) {
77
+ moviesTableViewController? . reload ( )
78
+ }
79
+
80
+ private func updateSearchQuery( _ query: String ) {
81
+ searchController. isActive = false
82
+ searchController. searchBar. text = query
84
83
}
85
84
86
- private func updateViewsVisibility ( loadingType : MoviesListViewModelLoading ? ) {
85
+ private func updateLoading ( _ loading : MoviesListViewModelLoading ? ) {
87
86
emptyDataLabel. isHidden = true
88
87
moviesListContainer. isHidden = true
89
88
suggestionsListContainer. isHidden = true
90
89
LoadingView . hide ( )
91
90
92
- switch loadingType {
91
+ switch loading {
93
92
case . fullScreen: LoadingView . show ( )
94
93
case . nextPage: moviesListContainer. isHidden = false
95
94
case . none:
96
95
moviesListContainer. isHidden = viewModel. isEmpty
97
96
emptyDataLabel. isHidden = !viewModel. isEmpty
98
97
}
99
98
100
- moviesTableViewController? . update ( for : loadingType )
101
- updateQueriesSuggestionsVisibility ( )
99
+ moviesTableViewController? . updateLoading ( loading )
100
+ updateQueriesSuggestions ( )
102
101
}
103
102
104
- private func updateQueriesSuggestionsVisibility ( ) {
103
+ private func updateQueriesSuggestions ( ) {
105
104
guard searchController. searchBar. isFirstResponder else {
106
105
viewModel. closeQueriesSuggestions ( )
107
106
return
108
107
}
109
108
viewModel. showQueriesSuggestions ( )
110
109
}
110
+
111
+ private func showError( _ error: String ) {
112
+ guard !error. isEmpty else { return }
113
+ showAlert ( title: viewModel. errorTitle, message: error)
114
+ }
111
115
}
112
116
113
117
// MARK: - Search Controller
@@ -145,14 +149,14 @@ extension MoviesListViewController: UISearchBarDelegate {
145
149
146
150
extension MoviesListViewController : UISearchControllerDelegate {
147
151
public func willPresentSearchController( _ searchController: UISearchController ) {
148
- updateQueriesSuggestionsVisibility ( )
152
+ updateQueriesSuggestions ( )
149
153
}
150
154
151
155
public func willDismissSearchController( _ searchController: UISearchController ) {
152
- updateQueriesSuggestionsVisibility ( )
156
+ updateQueriesSuggestions ( )
153
157
}
154
158
155
159
public func didDismissSearchController( _ searchController: UISearchController ) {
156
- updateQueriesSuggestionsVisibility ( )
160
+ updateQueriesSuggestions ( )
157
161
}
158
162
}
0 commit comments