Skip to content
This repository was archived by the owner on Aug 18, 2021. It is now read-only.

Commit 0b830f7

Browse files
committed
add: handling progress view
1 parent 20e1755 commit 0b830f7

File tree

5 files changed

+133
-1
lines changed

5 files changed

+133
-1
lines changed

app/src/main/java/com/frogobox/themealsapi/MainActivity.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,14 @@ class MainActivity : AppCompatActivity() {
2727
override fun failedResult(statusCode: Int, errorMessage: String?) {
2828
Toast.makeText(this@MainActivity, errorMessage, Toast.LENGTH_SHORT).show()
2929
}
30+
31+
override fun onShowProgress() {
32+
// Show Your Progress View
33+
}
34+
35+
override fun onHideProgress() {
36+
// Hide Your Progress View
37+
}
3038
})
3139

3240

frogothemealdbapi/src/main/java/com/frogobox/frogothemealdbapi/ConsumeTheMealDbApi.kt

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,14 @@ class ConsumeTheMealDbApi(private val apiKey: String) : ConsumeTheMealDbApiView
4646
override fun onFailed(statusCode: Int, errorMessage: String?) {
4747
callback.failedResult(statusCode, errorMessage)
4848
}
49+
50+
override fun onShowProgress() {
51+
callback.onShowProgress()
52+
}
53+
54+
override fun onHideProgress() {
55+
callback.onHideProgress()
56+
}
4957
})
5058
}
5159

@@ -64,6 +72,14 @@ class ConsumeTheMealDbApi(private val apiKey: String) : ConsumeTheMealDbApiView
6472
override fun onFailed(statusCode: Int, errorMessage: String?) {
6573
callback.failedResult(statusCode, errorMessage)
6674
}
75+
76+
override fun onShowProgress() {
77+
callback.onShowProgress()
78+
}
79+
80+
override fun onHideProgress() {
81+
callback.onHideProgress()
82+
}
6783
})
6884
}
6985

@@ -79,6 +95,14 @@ class ConsumeTheMealDbApi(private val apiKey: String) : ConsumeTheMealDbApiView
7995
override fun onFailed(statusCode: Int, errorMessage: String?) {
8096
callback.failedResult(statusCode, errorMessage)
8197
}
98+
99+
override fun onShowProgress() {
100+
callback.onShowProgress()
101+
}
102+
103+
override fun onHideProgress() {
104+
callback.onHideProgress()
105+
}
82106
})
83107
}
84108

@@ -93,6 +117,14 @@ class ConsumeTheMealDbApi(private val apiKey: String) : ConsumeTheMealDbApiView
93117
override fun onFailed(statusCode: Int, errorMessage: String?) {
94118
callback.failedResult(statusCode, errorMessage)
95119
}
120+
121+
override fun onShowProgress() {
122+
callback.onShowProgress()
123+
}
124+
125+
override fun onHideProgress() {
126+
callback.onHideProgress()
127+
}
96128
})
97129
}
98130

@@ -107,6 +139,14 @@ class ConsumeTheMealDbApi(private val apiKey: String) : ConsumeTheMealDbApiView
107139
override fun onFailed(statusCode: Int, errorMessage: String?) {
108140
callback.failedResult(statusCode, errorMessage)
109141
}
142+
143+
override fun onShowProgress() {
144+
callback.onShowProgress()
145+
}
146+
147+
override fun onHideProgress() {
148+
callback.onHideProgress()
149+
}
110150
})
111151
}
112152

@@ -121,6 +161,14 @@ class ConsumeTheMealDbApi(private val apiKey: String) : ConsumeTheMealDbApiView
121161
override fun onFailed(statusCode: Int, errorMessage: String?) {
122162
callback.failedResult(statusCode, errorMessage)
123163
}
164+
165+
override fun onShowProgress() {
166+
callback.onShowProgress()
167+
}
168+
169+
override fun onHideProgress() {
170+
callback.onHideProgress()
171+
}
124172
})
125173
}
126174

@@ -135,6 +183,14 @@ class ConsumeTheMealDbApi(private val apiKey: String) : ConsumeTheMealDbApiView
135183
override fun onFailed(statusCode: Int, errorMessage: String?) {
136184
callback.failedResult(statusCode, errorMessage)
137185
}
186+
187+
override fun onShowProgress() {
188+
callback.onShowProgress()
189+
}
190+
191+
override fun onHideProgress() {
192+
callback.onHideProgress()
193+
}
138194
})
139195
}
140196

@@ -149,6 +205,14 @@ class ConsumeTheMealDbApi(private val apiKey: String) : ConsumeTheMealDbApiView
149205
override fun onFailed(statusCode: Int, errorMessage: String?) {
150206
callback.failedResult(statusCode, errorMessage)
151207
}
208+
209+
override fun onShowProgress() {
210+
callback.onShowProgress()
211+
}
212+
213+
override fun onHideProgress() {
214+
callback.onHideProgress()
215+
}
152216
})
153217
}
154218

@@ -167,6 +231,14 @@ class ConsumeTheMealDbApi(private val apiKey: String) : ConsumeTheMealDbApiView
167231
override fun onFailed(statusCode: Int, errorMessage: String?) {
168232
callback.failedResult(statusCode, errorMessage)
169233
}
234+
235+
override fun onShowProgress() {
236+
callback.onShowProgress()
237+
}
238+
239+
override fun onHideProgress() {
240+
callback.onHideProgress()
241+
}
170242
})
171243
}
172244

@@ -185,6 +257,14 @@ class ConsumeTheMealDbApi(private val apiKey: String) : ConsumeTheMealDbApiView
185257
override fun onFailed(statusCode: Int, errorMessage: String?) {
186258
callback.failedResult(statusCode, errorMessage)
187259
}
260+
261+
override fun onShowProgress() {
262+
callback.onShowProgress()
263+
}
264+
265+
override fun onHideProgress() {
266+
callback.onHideProgress()
267+
}
188268
})
189269
}
190270

@@ -203,6 +283,15 @@ class ConsumeTheMealDbApi(private val apiKey: String) : ConsumeTheMealDbApiView
203283
override fun onFailed(statusCode: Int, errorMessage: String?) {
204284
callback.failedResult(statusCode, errorMessage)
205285
}
286+
287+
override fun onShowProgress() {
288+
callback.onShowProgress()
289+
}
290+
291+
override fun onHideProgress() {
292+
callback.onHideProgress()
293+
}
294+
206295
})
207296
}
208297
}

frogothemealdbapi/src/main/java/com/frogobox/frogothemealdbapi/base/BaseMealDataSource.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,13 @@ interface BaseMealDataSource {
2626

2727
// If failed fetching data from API
2828
fun onFailed(statusCode: Int, errorMessage: String? = "")
29+
30+
// Show Progress View
31+
fun onShowProgress()
32+
33+
// Hide Progress View
34+
fun onHideProgress()
35+
2936
}
3037

3138
}

frogothemealdbapi/src/main/java/com/frogobox/frogothemealdbapi/callback/MealResultCallback.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,9 @@ interface MealResultCallback<T> {
2525
// Failed Meesage
2626
fun failedResult(statusCode: Int, errorMessage: String?)
2727

28+
// Show Progress View
29+
fun onShowProgress()
30+
31+
// Hide Progress View
32+
fun onHideProgress()
2833
}

frogothemealdbapi/src/main/java/com/frogobox/frogothemealdbapi/data/source/MealRemoteDataSource.kt

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ package com.frogobox.frogothemealdbapi.data.source
22

33
import android.content.Context
44
import com.frogobox.frogothemealdbapi.data.model.*
5-
import com.frogobox.frogothemealdbapi.data.response.*
5+
import com.frogobox.frogothemealdbapi.data.response.CategoryResponse
6+
import com.frogobox.frogothemealdbapi.data.response.MealResponse
67
import com.frogobox.frogothemealdbapi.util.MealConstant
78
import io.reactivex.android.schedulers.AndroidSchedulers
89
import io.reactivex.schedulers.Schedulers
@@ -40,6 +41,8 @@ object MealRemoteDataSource : MealDataSource {
4041
mealApiService.getApiService
4142
.searchMeal(apiKey, mealName)
4243
.subscribeOn(Schedulers.io())
44+
.doOnSubscribe { callback.onShowProgress() }
45+
.doOnTerminate { callback.onHideProgress() }
4346
.observeOn(AndroidSchedulers.mainThread())
4447
.subscribe(object : MealApiCallback<MealResponse<Meal>>() {
4548
override fun onSuccess(data: MealResponse<Meal>) {
@@ -64,6 +67,8 @@ object MealRemoteDataSource : MealDataSource {
6467
mealApiService.getApiService
6568
.listAllMeal(apiKey, firstLetter)
6669
.subscribeOn(Schedulers.io())
70+
.doOnSubscribe { callback.onShowProgress() }
71+
.doOnTerminate { callback.onHideProgress() }
6772
.observeOn(AndroidSchedulers.mainThread())
6873
.subscribe(object : MealApiCallback<MealResponse<Meal>>() {
6974
override fun onSuccess(data: MealResponse<Meal>) {
@@ -87,6 +92,8 @@ object MealRemoteDataSource : MealDataSource {
8792
mealApiService.getApiService
8893
.lookupFullMeal(apiKey, idMeal)
8994
.subscribeOn(Schedulers.io())
95+
.doOnSubscribe { callback.onShowProgress() }
96+
.doOnTerminate { callback.onHideProgress() }
9097
.observeOn(AndroidSchedulers.mainThread())
9198
.subscribe(object : MealApiCallback<MealResponse<Meal>>() {
9299
override fun onSuccess(data: MealResponse<Meal>) {
@@ -109,6 +116,8 @@ object MealRemoteDataSource : MealDataSource {
109116
mealApiService.getApiService
110117
.lookupRandomMeal(apiKey)
111118
.subscribeOn(Schedulers.io())
119+
.doOnSubscribe { callback.onShowProgress() }
120+
.doOnTerminate { callback.onHideProgress() }
112121
.observeOn(AndroidSchedulers.mainThread())
113122
.subscribe(object : MealApiCallback<MealResponse<Meal>>() {
114123
override fun onSuccess(data: MealResponse<Meal>) {
@@ -131,6 +140,8 @@ object MealRemoteDataSource : MealDataSource {
131140
mealApiService.getApiService
132141
.listMealCategories(apiKey)
133142
.subscribeOn(Schedulers.io())
143+
.doOnSubscribe { callback.onShowProgress() }
144+
.doOnTerminate { callback.onHideProgress() }
134145
.observeOn(AndroidSchedulers.mainThread())
135146
.subscribe(object : MealApiCallback<CategoryResponse>() {
136147
override fun onSuccess(data: CategoryResponse) {
@@ -153,6 +164,8 @@ object MealRemoteDataSource : MealDataSource {
153164
mealApiService.getApiService
154165
.listAllCateories(apiKey, MealConstant.VALUE_LIST)
155166
.subscribeOn(Schedulers.io())
167+
.doOnSubscribe { callback.onShowProgress() }
168+
.doOnTerminate { callback.onHideProgress() }
156169
.observeOn(AndroidSchedulers.mainThread())
157170
.subscribe(object : MealApiCallback<MealResponse<Category>>() {
158171
override fun onSuccess(data: MealResponse<Category>) {
@@ -175,6 +188,8 @@ object MealRemoteDataSource : MealDataSource {
175188
mealApiService.getApiService
176189
.listAllArea(apiKey, MealConstant.VALUE_LIST)
177190
.subscribeOn(Schedulers.io())
191+
.doOnSubscribe { callback.onShowProgress() }
192+
.doOnTerminate { callback.onHideProgress() }
178193
.observeOn(AndroidSchedulers.mainThread())
179194
.subscribe(object : MealApiCallback<MealResponse<Area>>() {
180195
override fun onSuccess(data: MealResponse<Area>) {
@@ -197,6 +212,8 @@ object MealRemoteDataSource : MealDataSource {
197212
mealApiService.getApiService
198213
.listAllIngredients(apiKey, MealConstant.VALUE_LIST)
199214
.subscribeOn(Schedulers.io())
215+
.doOnSubscribe { callback.onShowProgress() }
216+
.doOnTerminate { callback.onHideProgress() }
200217
.observeOn(AndroidSchedulers.mainThread())
201218
.subscribe(object : MealApiCallback<MealResponse<Ingredient>>() {
202219
override fun onSuccess(data: MealResponse<Ingredient>) {
@@ -220,6 +237,8 @@ object MealRemoteDataSource : MealDataSource {
220237
mealApiService.getApiService
221238
.filterByIngredient(apiKey, ingredient)
222239
.subscribeOn(Schedulers.io())
240+
.doOnSubscribe { callback.onShowProgress() }
241+
.doOnTerminate { callback.onHideProgress() }
223242
.observeOn(AndroidSchedulers.mainThread())
224243
.subscribe(object : MealApiCallback<MealResponse<MealFilter>>() {
225244
override fun onSuccess(data: MealResponse<MealFilter>) {
@@ -243,6 +262,8 @@ object MealRemoteDataSource : MealDataSource {
243262
mealApiService.getApiService
244263
.filterByCategory(apiKey, category)
245264
.subscribeOn(Schedulers.io())
265+
.doOnSubscribe { callback.onShowProgress() }
266+
.doOnTerminate { callback.onHideProgress() }
246267
.observeOn(AndroidSchedulers.mainThread())
247268
.subscribe(object : MealApiCallback<MealResponse<MealFilter>>() {
248269
override fun onSuccess(data: MealResponse<MealFilter>) {
@@ -266,6 +287,8 @@ object MealRemoteDataSource : MealDataSource {
266287
mealApiService.getApiService
267288
.filterByArea(apiKey, area)
268289
.subscribeOn(Schedulers.io())
290+
.doOnSubscribe { callback.onShowProgress() }
291+
.doOnTerminate { callback.onHideProgress() }
269292
.observeOn(AndroidSchedulers.mainThread())
270293
.subscribe(object : MealApiCallback<MealResponse<MealFilter>>() {
271294
override fun onSuccess(data: MealResponse<MealFilter>) {

0 commit comments

Comments
 (0)