diff --git a/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt b/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt index 48aa9a611bbfc967312f56a2b88f44a1d0795363..a41e633418251f5c26ad43248d42387db81a5909 100644 --- a/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt +++ b/app/src/main/java/jp/atled/agileworks/view/ui/login/LoginFragment.kt @@ -49,6 +49,7 @@ class LoginFragment: Fragment() { val mOAuthService = OAuthService private lateinit var binding: FragmentLoginBinding private var shouldClearTaskOnOAuthFailure = false + private var disableButtonFlg = false override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { Log.d(TAG, "call onCreateView()") @@ -84,13 +85,13 @@ class LoginFragment: Fragment() { if (binding.viewmodel?.getAppBackGroundStatus() == true) { Log.d(TAG, "authState.isAuthorized == true") Log.d(TAG,"appBackGroundStatus == true") + disableButtonFlg = true disableLogin() setCookie() } else { // 認証済みの場合、生体/デバイス認証を実行 Log.d(TAG, "authState.isAuthorized == true") if (BiometricPrompt.anyAuthenticationAvailable(this.requireContext())) { - disableLogin() Handler().postDelayed({ startBiometricPrompt() }, 0) @@ -216,7 +217,9 @@ class LoginFragment: Fragment() { } private fun setLoginButtonEnable(host: String, context: String) { - loginButton.isEnabled = inputIsValid(host, context) + if (!disableButtonFlg) { + loginButton.isEnabled = inputIsValid(host, context) + } } private fun inputIsValid(host: String, context: String): Boolean { @@ -256,7 +259,13 @@ class LoginFragment: Fragment() { Log.d(TAG, "call startBiometricPrompt()") BiometricPrompt.auth(this.requireActivity()) { when (it) { - BiometricPrompt.Result.Success -> setCookie() + BiometricPrompt.Result.Success -> { + requireActivity().runOnUiThread { + disableButtonFlg = true + disableLogin() + } + setCookie() + } BiometricPrompt.Result.UnsupportedHardware -> onFailureAuthBiometricPrompt(R.string.auth_biometric_unsupported_hardware) BiometricPrompt.Result.NotHasBiometricsOnHardware -> onFailureAuthBiometricPrompt(R.string.auth_biometric_not_has_biometrics_on_hardware) BiometricPrompt.Result.Cancel -> onFailureAuthBiometricPrompt(R.string.auth_biometric_cancel) @@ -491,9 +500,11 @@ class LoginFragment: Fragment() { companion object { // ログイン時に利用するコントロール用 View の ID 群 val LOGIN_CONTROL_IDS = listOf( - R.id.serverUrl, - R.id.server_context, - R.id.loginButton + R.id.serverUrl, + R.id.server_context, + R.id.loginButton, + R.id.clientCertChoiceButton, + R.id.qrReadButton ) private val SCHEME_PATTERN = Regex("^https?://")