Переглянути джерело

fix 修复自动刷新token失败时无法正常返回登录页面的问题

robin 4 роки тому
батько
коміт
75a9ed4d60

+ 18 - 3
app/src/main/java/com/doverfuelingsolutions/issp/view/LoginActivity.kt

@@ -25,8 +25,14 @@ class LoginActivity : AppCompatActivity(),
     View.OnClickListener {
 
     companion object {
-        fun start(context: Context) {
-            Intent(context, LoginActivity::class.java).let { context.startActivity(it) }
+        const val autoLogin = "autoLogin"
+        const val loginMessage = "loginMessage"
+
+        fun start(context: Context, extras: Bundle) {
+            Intent(context, LoginActivity::class.java).let {
+                it.putExtras(extras)
+                context.startActivity(it)
+            }
         }
     }
 
@@ -46,7 +52,16 @@ class LoginActivity : AppCompatActivity(),
 
         PermissionUtil.requestPermissions(this)
 
-        if (GlobalData.isLogin) {
+        val msg = intent.getStringExtra(loginMessage)
+        if (!msg.isNullOrBlank()) {
+            snackbar.setText(msg)
+            snackbar.show()
+        }
+
+        val autoLogin = intent.getBooleanExtra(autoLogin, true)
+        if (!autoLogin) {
+            return
+        } else if (GlobalData.isLogin) {
             startMain()
         } else if (!loginViewModel.accountName.value.isNullOrBlank() && !loginViewModel.password.value.isNullOrBlank()) {
             submit()

+ 0 - 5
app/src/main/java/com/doverfuelingsolutions/issp/view/MainActivity.kt

@@ -219,11 +219,6 @@ class MainActivity : AppCompatActivity(),
         }
     }
 
-    fun backToLogin() {
-        LoginActivity.start(this)
-        finish()
-    }
-
     fun blockBackPress(isBlock: Boolean) {
         isBlockBackPress = isBlock
     }

+ 15 - 2
app/src/main/java/com/doverfuelingsolutions/issp/view/fragment/FragmentSelect.kt

@@ -4,6 +4,7 @@ import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import androidx.core.os.bundleOf
 import androidx.databinding.DataBindingUtil
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.viewModels
@@ -17,8 +18,10 @@ import com.doverfuelingsolutions.issp.data.GlobalData
 import com.doverfuelingsolutions.issp.databinding.FragmentSearchTypeBinding
 import com.doverfuelingsolutions.issp.fusion.FusionManager
 import com.doverfuelingsolutions.issp.utils.DFSToastUtil
+import com.doverfuelingsolutions.issp.utils.StringUtil
 import com.doverfuelingsolutions.issp.utils.log.DFSLog
 import com.doverfuelingsolutions.issp.utils.sp.SPUtil
+import com.doverfuelingsolutions.issp.view.LoginActivity
 import com.doverfuelingsolutions.issp.view.MainActivity
 import com.doverfuelingsolutions.issp.view.PreferenceActivity
 import kotlinx.android.synthetic.main.layout_loading.*
@@ -33,7 +36,7 @@ class FragmentSelect : FragmentBasic(),
 
     private var job: Job? = null
 
-    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
+    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
         if (!this::binding.isInitialized) {
             binding = DataBindingUtil.inflate(inflater, R.layout.fragment_search_type, container, false)
             binding.lifecycleOwner = this
@@ -163,8 +166,18 @@ class FragmentSelect : FragmentBasic(),
                 refreshLoginToken()
             } else {
                 DFSLog.d("loginToken refresh failed: ${result.message}")
+                GlobalData.isLogin = false
+                val msg = StringUtil.get(R.string.fail_refresh_login)
+                DFSToastUtil.fail(msg)
                 // 刷新失败返回登录界面
-                (activity as MainActivity).backToLogin()
+                (activity as MainActivity).finish()
+                LoginActivity.start(
+                    requireContext(),
+                    bundleOf(
+                        Pair(LoginActivity.autoLogin, false),
+                        Pair(LoginActivity.loginMessage, msg),
+                    )
+                )
             }
         }
     }

+ 1 - 0
app/src/main/res/values/strings.xml

@@ -22,6 +22,7 @@
     <string name="account_name">账号名</string>
     <string name="password">密码</string>
     <string name="login">登录</string>
+    <string name="fail_refresh_login">刷新 LoginToken 失败,请重新登录</string>
 
     <!-- preference -->
     <string name="preference">应用设置</string>