Skip to content

Commit f6bd35c

Browse files
authored
Add checks for empty answers list to sync (#252)
1 parent 82566aa commit f6bd35c

File tree

1 file changed

+20
-11
lines changed
  • app/src/main/java/ro/code4/monitorizarevot/repositories

1 file changed

+20
-11
lines changed

app/src/main/java/ro/code4/monitorizarevot/repositories/Repository.kt

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -228,10 +228,13 @@ class Repository : KoinComponent {
228228

229229
@SuppressLint("CheckResult")
230230
fun saveAnsweredQuestion(answeredQuestion: AnsweredQuestion, answers: List<SelectedAnswer>) {
231-
Observable.create<Unit> {
231+
Observable.fromCallable<Boolean> {
232232
db.formDetailsDao().insertAnsweredQuestion(answeredQuestion, answers)
233+
true
233234
}.subscribeOn(Schedulers.io())
234-
.observeOn(AndroidSchedulers.mainThread()).subscribe({}, {
235+
.observeOn(AndroidSchedulers.mainThread()).subscribe({
236+
Log.d(TAG, "Saving answered question: $answeredQuestion(answers: $answers)")
237+
}, {
235238
Log.i(TAG, it.message.orEmpty())
236239
})
237240
}
@@ -249,14 +252,20 @@ class Repository : KoinComponent {
249252
fun syncAnswers(countyCode: String, pollingStationNumber: Int, formId: Int) {
250253
db.formDetailsDao().getNotSyncedQuestionsForForm(countyCode, pollingStationNumber, formId)
251254
.toObservable()
252-
.subscribeOn(Schedulers.io()).flatMap {
253-
syncAnswers(it)
254-
}.observeOn(AndroidSchedulers.mainThread()).subscribe({
255-
Observable.create<Unit> {
256-
db.formDetailsDao()
257-
.updateAnsweredQuestions(countyCode, pollingStationNumber, formId)
258-
}.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
259-
.subscribe()
255+
.subscribeOn(Schedulers.io()).flatMap(
256+
{
257+
Log.d(TAG, "Syncing answers: ${it.size} answers to sync")
258+
syncAnswers(it)
259+
},
260+
{ answersList, response -> Pair(answersList, response) }
261+
).observeOn(AndroidSchedulers.mainThread()).subscribe({
262+
if (it.first.isNotEmpty()) {
263+
Observable.fromCallable {
264+
db.formDetailsDao()
265+
.updateAnsweredQuestions(countyCode, pollingStationNumber, formId)
266+
}.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
267+
.subscribe()
268+
}
260269
}, {
261270
Log.i(TAG, it.message ?: "Error on synchronizing data")
262271
})
@@ -431,7 +440,7 @@ class Repository : KoinComponent {
431440
db.pollingStationDao().deleteAll()
432441
}
433442
}
434-
443+
435444
fun getVisitedStations() = db.pollingStationDao().getVisitedPollingStations()
436445
}
437446

0 commit comments

Comments
 (0)