Skip to content

Instantly share code, notes, and snippets.

@NezSpencer
Created March 16, 2019 10:58
Show Gist options
  • Save NezSpencer/462210a41c4a3e31eac30ee827d0c73c to your computer and use it in GitHub Desktop.
Save NezSpencer/462210a41c4a3e31eac30ee827d0c73c to your computer and use it in GitHub Desktop.
Activity with viewModel pattern applied
import android.app.ProgressDialog
import android.arch.lifecycle.Observer
import android.arch.lifecycle.ViewModelProviders
import android.databinding.DataBindingUtil
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.text.TextUtils
import android.view.View
import android.widget.Toast
import com.google.firebase.auth.FirebaseAuth
import com.nezspencer.testapp.databinding.ActivitySubBinding
class SubActivity : AppCompatActivity(), FirebaseAuth.AuthStateListener, View.OnClickListener{
private lateinit var progress : ProgressDialog
private lateinit var binding : ActivitySubBinding
lateinit var viewModel: SubViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_sub)
viewModel = ViewModelProviders.of(this)[SubViewModel::class.java]
viewModel.authLivedata.observe(this, Observer<AuthState> {p0 ->
p0?.let {
if (it.state == Progress.LOADING)
showProgress()
else {
hideProgress()
onAuthStateChanged(it.auth!!)
}
}
})
progress = ProgressDialog(this)
progress.setCanceledOnTouchOutside(false)
progress.setCancelable(false)
binding.btnSignin.setOnClickListener(this)
binding.btnSignup.setOnClickListener(this)
}
override fun onAuthStateChanged(p0: FirebaseAuth) {
val message : String = if (p0.currentUser != null) "Auth successful" else "Auth failed"
Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
}
override fun onClick(p0: View?) {
val email : String
val password : String
when(p0!!.id){
R.id.btn_signup -> {
email = binding.etEmail.text.toString()
password = binding.etPwd.text.toString()
viewModel.createAccount(email, password)
}
R.id.btn_signin ->{
email = binding.etEmail.text.toString()
password = binding.etPwd.text.toString()
viewModel.signInUser(email, password)
}
}
}
private fun showProgress() {
if (!progress.isShowing)
progress.show()
}
private fun hideProgress(){
if (progress.isShowing)
progress.dismiss()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment