Skip to content

Commit c947812

Browse files
committed
Summary: Add chaining RxJava
Fixes: #2116
1 parent 26a8166 commit c947812

File tree

5 files changed

+31
-91
lines changed

5 files changed

+31
-91
lines changed

app/src/main/java/org/fossasia/openevent/general/about/AboutEventViewModel.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class AboutEventViewModel(private val eventService: EventService, private val re
2525
val error: LiveData<String> = mutableError
2626

2727
fun loadEvent(id: Long) {
28-
if (id.equals(-1)) {
28+
if (id == -1L) {
2929
mutableError.value = Resource().getString(R.string.error_fetching_event_message)
3030
return
3131
}

app/src/main/java/org/fossasia/openevent/general/auth/EditProfileViewModel.kt

Lines changed: 11 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package org.fossasia.openevent.general.auth
33
import androidx.lifecycle.LiveData
44
import androidx.lifecycle.MutableLiveData
55
import androidx.lifecycle.ViewModel
6+
import io.reactivex.Single
67
import io.reactivex.disposables.CompositeDisposable
78
import io.reactivex.rxkotlin.plusAssign
89
import org.fossasia.openevent.general.utils.extensions.withDefaultSchedulers
@@ -37,43 +38,17 @@ class EditProfileViewModel(
3738
* @param lastName updated lastName
3839
*/
3940
fun updateProfile(firstName: String, lastName: String, details: String) {
40-
if (encodedImage.isNullOrEmpty()) {
41-
updateUser(null, firstName, lastName, details)
42-
return
43-
}
44-
compositeDisposable += authService.uploadImage(UploadImage(encodedImage))
45-
.withDefaultSchedulers()
46-
.doOnSubscribe {
47-
mutableProgress.value = true
48-
}
49-
.doFinally {
50-
mutableProgress.value = false
51-
}
52-
.subscribe({
53-
updateUser(it.url, firstName, lastName, details)
54-
mutableMessage.value = resource.getString(R.string.image_upload_success_message)
55-
Timber.d("Image uploaded ${it.url}")
56-
}) {
57-
mutableMessage.value = resource.getString(R.string.image_upload_error_message)
58-
Timber.e(it, "Error uploading user!")
59-
}
60-
}
61-
62-
private fun updateUser(url: String?, firstName: String, lastName: String, details: String) {
6341
val id = authHolder.getId()
64-
if (firstName.isEmpty() || lastName.isEmpty()) {
65-
mutableMessage.value = resource.getString(R.string.provide_name_message)
66-
return
67-
}
68-
compositeDisposable += authService.updateUser(
69-
User(
70-
id = id,
71-
firstName = firstName,
72-
lastName = lastName,
73-
avatarUrl = url,
74-
details = details
75-
), id
76-
)
42+
val user = User(id = id, firstName = firstName, lastName = lastName, avatarUrl = null, details = details)
43+
val updateProfileObservable: Single<User> =
44+
if (encodedImage.isNullOrEmpty())
45+
authService.updateUser(user, id)
46+
else
47+
authService.uploadImage(UploadImage(encodedImage)).flatMap {
48+
authService.updateUser(user.copy(avatarUrl = it.url), id)
49+
}
50+
51+
compositeDisposable += updateProfileObservable
7752
.withDefaultSchedulers()
7853
.doOnSubscribe {
7954
mutableProgress.value = true

app/src/main/java/org/fossasia/openevent/general/auth/SignUpViewModel.kt

Lines changed: 9 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package org.fossasia.openevent.general.auth
33
import androidx.lifecycle.LiveData
44
import androidx.lifecycle.MutableLiveData
55
import androidx.lifecycle.ViewModel
6+
import io.reactivex.Single
67
import io.reactivex.disposables.CompositeDisposable
78
import io.reactivex.rxkotlin.plusAssign
89
import org.fossasia.openevent.general.utils.extensions.withDefaultSchedulers
@@ -36,14 +37,19 @@ class SignUpViewModel(
3637
fun signUp(signUp: SignUp) {
3738
if (!isConnected()) return
3839

39-
compositeDisposable += authService.signUp(signUp)
40-
.withDefaultSchedulers()
40+
compositeDisposable += authService.signUp(signUp).flatMap {
41+
email = signUp.email
42+
password = signUp.password
43+
authService.login(email.nullToEmpty(), password.nullToEmpty()).flatMap {
44+
authService.getProfile()
45+
}
46+
}.withDefaultSchedulers()
4147
.doOnSubscribe {
4248
mutableProgress.value = true
4349
}.doFinally {
4450
mutableProgress.value = false
4551
}.subscribe({
46-
login(signUp)
52+
mutableLoggedIn.value = true
4753
Timber.d("Success!")
4854
}, {
4955
when {
@@ -57,37 +63,6 @@ class SignUpViewModel(
5763
})
5864
}
5965

60-
private fun login(signUp: SignUp) {
61-
if (!isConnected()) return
62-
email = signUp.email
63-
password = signUp.password
64-
compositeDisposable += authService.login(email.nullToEmpty(), password.nullToEmpty())
65-
.withDefaultSchedulers()
66-
.doOnSubscribe {
67-
mutableProgress.value = true
68-
}.doFinally {
69-
mutableProgress.value = false
70-
}.subscribe({
71-
mutableLoggedIn.value = true
72-
Timber.d("Success!")
73-
fetchProfile()
74-
}, {
75-
mutableError.value = resource.getString(R.string.login_automatically_fail_message)
76-
Timber.d(it, "Failed")
77-
})
78-
}
79-
80-
private fun fetchProfile() {
81-
if (!isConnected()) return
82-
compositeDisposable += authService.getProfile()
83-
.withDefaultSchedulers()
84-
.subscribe({
85-
Timber.d("Fetched User Details")
86-
}) {
87-
Timber.e(it, "Error loading user details")
88-
}
89-
}
90-
9166
override fun onCleared() {
9267
super.onCleared()
9368
compositeDisposable.clear()

app/src/main/java/org/fossasia/openevent/general/event/EventDetailsViewModel.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -302,15 +302,15 @@ class EventDetailsViewModel(
302302
val range = StringBuilder()
303303
if (maxPrice == minPrice) {
304304
if (maxPrice == 0f)
305-
range.append("Free")
305+
range.append(resource.getString(R.string.free))
306306
else {
307307
range.append(paymentCurrency)
308308
range.append(" ")
309309
range.append(minPrice)
310310
}
311311
} else {
312312
if (minPrice == 0f)
313-
range.append("Free")
313+
range.append(resource.getString(R.string.free))
314314
else {
315315
range.append(paymentCurrency)
316316
range.append(" ")

app/src/main/java/org/fossasia/openevent/general/order/OrderDetailsViewModel.kt

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package org.fossasia.openevent.general.order
33
import androidx.lifecycle.LiveData
44
import androidx.lifecycle.MutableLiveData
55
import androidx.lifecycle.ViewModel
6+
import io.reactivex.Single
67
import io.reactivex.disposables.CompositeDisposable
78
import io.reactivex.rxkotlin.plusAssign
89
import org.fossasia.openevent.general.utils.extensions.withDefaultSchedulers
@@ -54,31 +55,20 @@ class OrderDetailsViewModel(
5455
fun loadAttendeeDetails(orderId: Long) {
5556
if (orderId == -1L) return
5657

57-
compositeDisposable += orderService.getOrderById(orderId)
58+
compositeDisposable += orderService
59+
.getOrderById(orderId)
60+
.flatMap { order ->
61+
orderService.getAttendeesUnderOrder(order.identifier ?: "", order.attendees.map { it.id })
62+
}
5863
.withDefaultSchedulers()
5964
.doOnSubscribe {
6065
mutableProgress.value = true
61-
}.subscribe({
62-
loadAttendeeUnderOrder(it)
63-
}, {
64-
Timber.e(it, "Error fetching attendee details")
66+
}.doFinally {
6567
mutableProgress.value = false
66-
message.value = resource.getString(R.string.error_fetching_attendee_details_message)
67-
})
68-
}
69-
70-
private fun loadAttendeeUnderOrder(order: Order) {
71-
val orderIdentifier = order.identifier ?: return
72-
73-
compositeDisposable += orderService
74-
.getAttendeesUnderOrder(orderIdentifier, order.attendees.map { it.id })
75-
.withDefaultSchedulers()
76-
.subscribe({
68+
}.subscribe({
7769
mutableAttendees.value = it
78-
mutableProgress.value = false
7970
}, {
8071
Timber.e(it, "Error fetching attendee details")
81-
mutableProgress.value = false
8272
message.value = resource.getString(R.string.error_fetching_attendee_details_message)
8373
})
8474
}

0 commit comments

Comments
 (0)