Skip to content

Commit 7199bd8

Browse files
committed
Refactor HomeView
1 parent b71a58f commit 7199bd8

File tree

1 file changed

+28
-15
lines changed

1 file changed

+28
-15
lines changed

RubyEvents/views/HomeView.swift

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -101,31 +101,44 @@ struct HomeView: View {
101101
) in
102102
DispatchQueue.main.async {
103103
isLoading = false
104-
105-
switch result {
106-
case .success(let response):
107-
featured = response.featured
108-
events = response.events
109-
talks = response.talks
110-
speakers = response.speakers
111-
case .failure(let error):
112-
self.errorMessage = error.localizedDescription
113-
}
104+
handleFetchResult(result)
114105
}
115106
}
116107
}
117108

118109
private func refreshData() async {
110+
isLoading = true
111+
errorMessage = nil
112+
119113
do {
120114
let response: HomeViewResponse = try await APIService.shared.fetchData(from: Router.instance.home_json_url().absoluteString)
121-
featured = response.featured
122-
events = response.events
123-
talks = response.talks
124-
speakers = response.speakers
115+
DispatchQueue.main.async {
116+
isLoading = false
117+
handleResponse(response)
118+
}
125119
} catch {
126-
errorMessage = error.localizedDescription
120+
DispatchQueue.main.async {
121+
isLoading = false
122+
errorMessage = error.localizedDescription
123+
}
124+
}
125+
}
126+
127+
private func handleFetchResult(_ result: Result<HomeViewResponse, NetworkError>) {
128+
switch result {
129+
case .success(let response):
130+
handleResponse(response)
131+
case .failure(let error):
132+
self.errorMessage = error.localizedDescription
127133
}
128134
}
135+
136+
private func handleResponse(_ response: HomeViewResponse) {
137+
featured = response.featured
138+
events = response.events
139+
talks = response.talks
140+
speakers = response.speakers
141+
}
129142
}
130143

131144
#Preview {

0 commit comments

Comments
 (0)