瀏覽代碼

Moved subscription to activity

Vadik Sirekanyan 7 年之前
父節點
當前提交
ce4fe8c552

+ 4 - 2
app/src/main/java/com/sirekanyan/knigopis/feature/MainActivity.kt

@@ -108,13 +108,15 @@ class MainActivity : BaseActivity(), Router {
     override fun onStart() {
         super.onStart()
         refreshOptionsMenu()
-        auth.requestAccessToken {
+        auth.requestAccessToken().bind({
             refreshOptionsMenu()
             if (userLoggedIn) {
                 userLoggedIn = false
                 refresh()
             }
-        }
+        }, {
+            logError("cannot check credentials", it)
+        })
         if (booksChanged) {
             booksChanged = false
             refresh(isForce = true)

+ 9 - 9
app/src/main/java/com/sirekanyan/knigopis/repository/KAuth.kt

@@ -3,7 +3,7 @@ package com.sirekanyan.knigopis.repository
 import android.content.Context
 import android.content.Intent
 import com.sirekanyan.knigopis.common.extensions.io2main
-import com.sirekanyan.knigopis.common.functions.logError
+import io.reactivex.Completable
 import ru.ulogin.sdk.UloginAuthActivity
 import java.util.*
 
@@ -18,7 +18,7 @@ interface KAuth {
     fun getTokenRequest(): Intent
     fun getUserProfile(): String?
     fun saveTokenResponse(data: Intent)
-    fun requestAccessToken(onSuccess: () -> Unit)
+    fun requestAccessToken(): Completable
     fun logout()
 }
 
@@ -44,20 +44,20 @@ class KAuthImpl(
         preferences.edit().putString(TOKEN_KEY, userData[TOKEN_KEY].toString()).apply()
     }
 
-    override fun requestAccessToken(onSuccess: () -> Unit) {
+    override fun requestAccessToken(): Completable {
         val token = preferences.getString(TOKEN_KEY, null)
-        if (token != null && !isAuthorized()) {
+        return if (token != null && !isAuthorized()) {
             api.getCredentials(token)
                 .io2main()
-                .subscribe({
+                .doOnSuccess {
                     preferences.edit()
                         .putString(ACCESS_TOKEN_KEY, it.accessToken)
                         .putString(USER_PROFILE, it.user.fixedProfile)
                         .apply()
-                    onSuccess()
-                }, {
-                    logError("cannot get credentials", it)
-                })
+                }
+                .toCompletable()
+        } else {
+            Completable.complete()
         }
     }