From dd6da9d6ec0de41bc3747325d637ff4c5c4a2b9f Mon Sep 17 00:00:00 2001 From: pedrofsn Date: Sun, 25 Oct 2020 15:30:51 -0300 Subject: [PATCH 1/4] Sending firebase token on the login call --- .../code4/monitorizarevot/data/model/User.kt | 3 +- .../repositories/Repository.kt | 3 -- .../services/LoginInterface.kt | 3 -- .../ui/login/LoginViewModel.kt | 46 +++++++------------ 4 files changed, 19 insertions(+), 36 deletions(-) diff --git a/app/src/main/java/ro/code4/monitorizarevot/data/model/User.kt b/app/src/main/java/ro/code4/monitorizarevot/data/model/User.kt index 51954ec4..2b5942ff 100644 --- a/app/src/main/java/ro/code4/monitorizarevot/data/model/User.kt +++ b/app/src/main/java/ro/code4/monitorizarevot/data/model/User.kt @@ -5,5 +5,6 @@ import com.google.gson.annotations.Expose class User( @field:Expose var user: String, @field:Expose var password: String, - @field:Expose var uniqueId: String + @field:Expose var fcmToken: String, + @field:Expose var channelName: String = "Firebase" ) \ No newline at end of file diff --git a/app/src/main/java/ro/code4/monitorizarevot/repositories/Repository.kt b/app/src/main/java/ro/code4/monitorizarevot/repositories/Repository.kt index a3254ea4..b540200d 100644 --- a/app/src/main/java/ro/code4/monitorizarevot/repositories/Repository.kt +++ b/app/src/main/java/ro/code4/monitorizarevot/repositories/Repository.kt @@ -51,9 +51,6 @@ class Repository : KoinComponent { private var syncInProgress = false fun login(user: User): Observable = loginInterface.login(user) - fun registerForNotification(token: String): Observable = - loginInterface.registerForNotification(token) - fun getCounties(): Single> { val observableApi = apiInterface.getCounties() val observableDb = db.countyDao().getAll().take(1).single(emptyList()) diff --git a/app/src/main/java/ro/code4/monitorizarevot/services/LoginInterface.kt b/app/src/main/java/ro/code4/monitorizarevot/services/LoginInterface.kt index 837e6d9c..44ef5504 100644 --- a/app/src/main/java/ro/code4/monitorizarevot/services/LoginInterface.kt +++ b/app/src/main/java/ro/code4/monitorizarevot/services/LoginInterface.kt @@ -11,7 +11,4 @@ import ro.code4.monitorizarevot.data.model.response.LoginResponse interface LoginInterface { @POST("access/authorize") fun login(@Body user: User): Observable - - @POST("notification/register") - fun registerForNotification(@Query("Token") token: String, @Query("ChannelName") channelName: String = "Firebase"): Observable } \ No newline at end of file diff --git a/app/src/main/java/ro/code4/monitorizarevot/ui/login/LoginViewModel.kt b/app/src/main/java/ro/code4/monitorizarevot/ui/login/LoginViewModel.kt index c83c1bd3..70e51839 100644 --- a/app/src/main/java/ro/code4/monitorizarevot/ui/login/LoginViewModel.kt +++ b/app/src/main/java/ro/code4/monitorizarevot/ui/login/LoginViewModel.kt @@ -1,13 +1,11 @@ package ro.code4.monitorizarevot.ui.login import android.content.SharedPreferences -import android.util.Log import androidx.lifecycle.LiveData import com.google.firebase.analytics.FirebaseAnalytics import com.google.firebase.iid.FirebaseInstanceId import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers -import org.koin.android.ext.android.inject import org.koin.core.inject import ro.code4.monitorizarevot.BuildConfig import ro.code4.monitorizarevot.analytics.Event @@ -34,10 +32,11 @@ class LoginViewModel : BaseViewModel() { getFirebaseToken(phone, password) } - private fun onSuccessfulLogin(loginResponse: LoginResponse, firebaseToken: String) { + private fun onSuccessfulLogin(loginResponse: LoginResponse) { logD("onSuccessfulLogin") + sharedPreferences.saveToken(loginResponse.accessToken) - registerForNotification(firebaseToken) + onSuccessfulRegisteredForNotification() } private fun onSuccessfulRegisteredForNotification() { @@ -73,35 +72,24 @@ class LoginViewModel : BaseViewModel() { fun login(phone: String, password: String, firebaseToken: String) { logD("login: $phone : $password -> $firebaseToken") - disposables.add( - loginRepository.login(User(phone, password, firebaseToken)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe({ loginResponse -> - logD("Login successful! Token received!") - onSuccessfulLogin(loginResponse, firebaseToken) - }, { throwable -> - firebaseAnalytics.logEvent(Event.LOGIN_FAILED.title, null) - logE("Login failed!", throwable) - onError(throwable) - }) + + val user = User( + user = phone, + password = password, + fcmToken = firebaseToken ) - } - private fun registerForNotification(firebaseToken: String) { - logD("registerForNotification with $firebaseToken") - disposables.add( - loginRepository.registerForNotification(firebaseToken) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe({ - logD("Registered for notifications on firebase!") - onSuccessfulRegisteredForNotification() - }, { throwable -> - logE("Register for notification failed!", throwable) + loginRepository.login(user) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe( + { loginResponse -> onSuccessfulLogin(loginResponse) }, + { throwable -> + firebaseAnalytics.logEvent(Event.LOGIN_FAILED.title, null) + logE("Login failed!", throwable) onError(throwable) }) - ) + .run { disposables.add(this) } } override fun onError(throwable: Throwable) { From 2277bd17905433af9add30342d6dd4a297fc9ac2 Mon Sep 17 00:00:00 2001 From: pedrofsn Date: Sat, 31 Oct 2020 16:04:20 -0300 Subject: [PATCH 2/4] PR adjustment | adding code suggested --- .../ro/code4/monitorizarevot/ui/login/LoginViewModel.kt | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/app/src/main/java/ro/code4/monitorizarevot/ui/login/LoginViewModel.kt b/app/src/main/java/ro/code4/monitorizarevot/ui/login/LoginViewModel.kt index 70e51839..d43734c8 100644 --- a/app/src/main/java/ro/code4/monitorizarevot/ui/login/LoginViewModel.kt +++ b/app/src/main/java/ro/code4/monitorizarevot/ui/login/LoginViewModel.kt @@ -72,14 +72,7 @@ class LoginViewModel : BaseViewModel() { fun login(phone: String, password: String, firebaseToken: String) { logD("login: $phone : $password -> $firebaseToken") - - val user = User( - user = phone, - password = password, - fcmToken = firebaseToken - ) - - loginRepository.login(user) + loginRepository.login(User(phone, password, firebaseToken)) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( From 471bf3332087667ef8ec2b825cf7b63d868afabb Mon Sep 17 00:00:00 2001 From: pedrofsn Date: Sat, 31 Oct 2020 16:06:30 -0300 Subject: [PATCH 3/4] PR adjustment | combining methods --- .../code4/monitorizarevot/ui/login/LoginViewModel.kt | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/ro/code4/monitorizarevot/ui/login/LoginViewModel.kt b/app/src/main/java/ro/code4/monitorizarevot/ui/login/LoginViewModel.kt index d43734c8..84f5a997 100644 --- a/app/src/main/java/ro/code4/monitorizarevot/ui/login/LoginViewModel.kt +++ b/app/src/main/java/ro/code4/monitorizarevot/ui/login/LoginViewModel.kt @@ -34,18 +34,14 @@ class LoginViewModel : BaseViewModel() { private fun onSuccessfulLogin(loginResponse: LoginResponse) { logD("onSuccessfulLogin") - sharedPreferences.saveToken(loginResponse.accessToken) - onSuccessfulRegisteredForNotification() - } - private fun onSuccessfulRegisteredForNotification() { logD("onSuccessfulRegisteredForNotification") - if (sharedPreferences.hasCompletedOnboarding()) { - loginLiveData.postValue(Result.Success(PollingStationActivity::class.java)) - } else { - loginLiveData.postValue(Result.Success(OnboardingActivity::class.java)) + val classJava = when (sharedPreferences.hasCompletedOnboarding()) { + true -> PollingStationActivity::class.java + false -> OnboardingActivity::class.java } + loginLiveData.postValue(Result.Success(classJava)) } private fun getFirebaseToken(phone: String, password: String) { From db85bac2069103e5da1aad068b59e068b8dc609e Mon Sep 17 00:00:00 2001 From: Irina Borozan Date: Tue, 3 Nov 2020 21:47:55 +0200 Subject: [PATCH 4/4] rename variable and add correct login endpoint --- .../java/ro/code4/monitorizarevot/services/LoginInterface.kt | 2 +- .../java/ro/code4/monitorizarevot/ui/login/LoginViewModel.kt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/ro/code4/monitorizarevot/services/LoginInterface.kt b/app/src/main/java/ro/code4/monitorizarevot/services/LoginInterface.kt index 44ef5504..785b8c2b 100644 --- a/app/src/main/java/ro/code4/monitorizarevot/services/LoginInterface.kt +++ b/app/src/main/java/ro/code4/monitorizarevot/services/LoginInterface.kt @@ -9,6 +9,6 @@ import ro.code4.monitorizarevot.data.model.User import ro.code4.monitorizarevot.data.model.response.LoginResponse interface LoginInterface { - @POST("access/authorize") + @POST("/api/v2/access/authorize") fun login(@Body user: User): Observable } \ No newline at end of file diff --git a/app/src/main/java/ro/code4/monitorizarevot/ui/login/LoginViewModel.kt b/app/src/main/java/ro/code4/monitorizarevot/ui/login/LoginViewModel.kt index 84f5a997..e1868d3c 100644 --- a/app/src/main/java/ro/code4/monitorizarevot/ui/login/LoginViewModel.kt +++ b/app/src/main/java/ro/code4/monitorizarevot/ui/login/LoginViewModel.kt @@ -37,11 +37,11 @@ class LoginViewModel : BaseViewModel() { sharedPreferences.saveToken(loginResponse.accessToken) logD("onSuccessfulRegisteredForNotification") - val classJava = when (sharedPreferences.hasCompletedOnboarding()) { + val nextActivity = when (sharedPreferences.hasCompletedOnboarding()) { true -> PollingStationActivity::class.java false -> OnboardingActivity::class.java } - loginLiveData.postValue(Result.Success(classJava)) + loginLiveData.postValue(Result.Success(nextActivity)) } private fun getFirebaseToken(phone: String, password: String) {