Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How to check if user email is verified in firebase, even though I don't have a literal User Object

private fun login(email: String, password: String) {
    val checkingDialog = Dialog(requireActivity())
    checkingDialog.setContentView(R.layout.checking_progressbar)
    checkingDialog.setCanceledOnTouchOutside(false)

    CoroutineScope(Dispatchers.IO).launch {
        withContext(Dispatchers.Main) {
            // Show Checking Dialog
            checkingDialog.show()
        }
        FirebaseAuth.getInstance().currentUser?.reload()
        Log.e("a7a", "login clicked")

        if (checkForEmptyInputs()) {
            Log.e("a7a", "input checks login fragment tmam")
            try {
                // TODO lazm a8ayr kosom elsatr da 3l4an a5ls mn ksom el7war da
                if (FirebaseAuth.getInstance().currentUser?.isEmailVerified == true) {
                    FirebaseAuth.getInstance().signInWithEmailAndPassword(email, password)
                        .addOnCompleteListener {
                            checkingDialog.dismiss()
                            Log.e("a7a", "complete")
                            if (it.isSuccessful) {
                                Log.e("a7a", "sign in fol")
                                val intent = Intent(requireActivity(), MainActivity::class.java)
                                intent.flags =
                                    Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
                                CoroutineScope(Dispatchers.IO).launch {
                                    val userDocumentId =
                                        getUserIdByEmail(binding?.etEmailSignIn?.text.toString())
                                    intent.putExtra("userDocumentId", userDocumentId)
                                    intent.putExtra("userEmail",
                                        binding?.etEmailSignIn?.text.toString())
                                    startActivity(intent)
                                    requireActivity().finish()
                                }
                            } else {
                                Log.e("a7a", it.exception?.message.toString())
                                lifecycleScope.launch {
                                    withContext(Dispatchers.Main) {
                                        binding?.tvSignInErrors?.visibility = View.VISIBLE
                                        var errorMessage = it.exception?.message.toString()
                                        if (errorMessage == "The password is invalid or the user does not have a password.") {
                                            errorMessage = "Invalid Password"
                                        }
                                        binding?.tvSignInErrors?.text = errorMessage
                                    }
                                }

                            }
                        }
                } else {
                    Log.e("a7a", "Please Verify your Account")
                    withContext(Dispatchers.Main) {
                        checkingDialog.dismiss()
                        binding?.tvSignInErrors?.visibility = View.VISIBLE
                        binding?.tvSignInErrors?.text = getString(R.string.verifyAccount)
                    }
                    FirebaseAuth.getInstance().currentUser?.sendEmailVerification()
                }
            } catch (e: NullPointerException) {
                withContext(Dispatchers.Main) {
                    binding?.tvSignInErrors?.visibility = View.VISIBLE
                    binding?.tvSignInErrors?.text = getString(R.string.sample_error)
                }
            } catch (e: Exception) {
                withContext(Dispatchers.Main) {
                    binding?.tvSignInErrors?.visibility = View.VISIBLE
                    binding?.tvSignInErrors?.text = e.toString()
                }
            }
        }
    }
}

That’s the function I am using to sign into firebase
This works fine when I sign in with the device that I created the account from, however, when I try to sign in from another device, it sais that the account isn’t verified, and doens’t pass the if statement of the verification. So the thing is, I understand that the userobject here isn’t available for the new device, so How can I check if a specific email is verified, not the current user is verified because that’s empty in that case?

>Solution :

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

Simply Move the if block you’re using to check verification, in the onsuccess listener block

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading