Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.masrobot.klikpesanantar.MainApp.Main
- import android.util.Log
- import android.view.MenuItem
- import com.example.masrobot.klikpesanantar.BaseContract.Presenter
- import com.example.masrobot.klikpesanantar.MainApp.Model.Kategori
- import com.example.masrobot.klikpesanantar.MainApp.Model.Users
- import com.example.masrobot.klikpesanantar.R
- import com.google.android.gms.auth.api.signin.GoogleSignInAccount
- import com.google.firebase.auth.FirebaseAuth
- import com.google.firebase.auth.FirebaseUser
- import com.google.firebase.auth.GoogleAuthProvider
- import com.google.firebase.database.*
- class MainPresenter : Presenter<MainView> {
- // Load MainView
- private var mView: MainView? = null
- private val TAG: String = MainPresenter::class.java.simpleName
- // Choose an arbitrary request code value
- val RC_SIGN_IN: Int = 123
- // Firebase Reference
- private var mDatabase: DatabaseReference? = null
- private var mValueEventListener: ValueEventListener? = null
- private var mAuth: FirebaseAuth? = null
- private var mUser: FirebaseUser? = null
- private var mGoogleSignInAccount: GoogleSignInAccount? = null
- // Attach UI
- override fun onAttach(view: MainView) {
- mView = view
- }
- // Detach UI
- override fun onDetach() {
- mView = null
- }
- // Show view logic here
- // Get Kategori from firebase
- fun onCreate() {
- // initialize firebase
- // Firebase Realtime Database
- mDatabase = FirebaseDatabase.getInstance().getReference()
- // Firebase Authentication
- mAuth = FirebaseAuth.getInstance()
- // Firebase User
- mUser = mAuth?.currentUser
- // Navigation Drawer Kondisi auth user ?
- navigationDrawerAuth()
- }
- // firebase Auth User is True ?
- fun fireGetCurrentUserAuth(): Boolean = mUser != null
- // Navigation Drawer auth user ?
- fun navigationDrawerAuth() {
- if (fireGetCurrentUserAuth()){
- mView?.menuItemWithAuth()
- } else {
- mView?.menuItemWithoutAuth()
- }
- }
- fun googleCredential() {
- val mGoogleAuthCredential =
- GoogleAuthProvider.getCredential(mGoogleSignInAccount?.idToken, null)
- }
- fun saveUserProfile() {
- // Firebase User Database Reference
- val mUserChild = mDatabase?.child("users")?.child(mUser?.uid)
- if (fireGetCurrentUserAuth()) {
- mUserChild?.child("uid")?.setValue(mUser?.uid)
- mUserChild?.child("email")?.setValue(mUser?.email)
- mUserChild?.child("telepon")?.setValue(mUser?.phoneNumber)
- }
- }
- fun onStart() {
- // Firebase Listener start here
- val valueEventListener = object : ValueEventListener {
- // Menampilkan, Membaca, dan Mendeteksi Data
- override fun onDataChange(dataSnapshot: DataSnapshot?) {
- // Lokasi Data POKO
- val kategoriDatas = ArrayList<Kategori>()
- // Perulangan untuk menyimpan Data ke POKO
- for (kategoriSnapshot in dataSnapshot!!.getChildren()) {
- val mainData = kategoriSnapshot.getValue(Kategori::class.java)
- kategoriDatas.add(mainData!!)
- }
- // Passing Data ke View
- mView?.refreshKategoriList(kategoriDatas)
- }
- // Jika mengalami kegagalan akan dilempar ke error
- override fun onCancelled(databaseError: DatabaseError?) {
- Log.w(TAG, "LoadKategori:onCancelled", databaseError?.toException())
- mView?.toast("LoadKategori:onCancelled ${databaseError?.message}")
- }
- }
- // Query untuk mengambil kategori
- mDatabase?.child("kategori")?.orderByKey()?.addValueEventListener(valueEventListener)
- mValueEventListener = valueEventListener
- }
- fun onStop() {
- // Melepas Listener untuk menghapus callback Firebase
- if (mValueEventListener != null) {
- mDatabase?.child("kategori")?.removeEventListener(mValueEventListener)
- }
- }
- fun onResume() {
- // Navigation Drawer Kondisi auth user ?
- navigationDrawerAuth()
- }
- fun navigationItemSelected(item: MenuItem): Boolean {
- // Handle navigation view item clicks here.
- when (item.itemId) {
- R.id.nav_beranda -> {
- }
- R.id.nav_favorit -> {
- }
- R.id.nav_toko -> {
- }
- R.id.nav_pengaturan -> {
- }
- R.id.nav_bantuan -> {
- }
- R.id.nav_tentang -> {
- }
- R.id.nav_masuk -> {
- mView?.signIn(RC_SIGN_IN)
- }
- R.id.nav_keluar -> {
- mView?.signOut()
- }
- }
- mView?.closeDrawer()
- return true
- }
- }
Add Comment
Please, Sign In to add comment