Mashudi

MainPresenter

May 16th, 2018
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 4.92 KB | None | 0 0
  1. package com.example.masrobot.klikpesanantar.MainApp.Main
  2.  
  3. import android.util.Log
  4. import android.view.MenuItem
  5. import com.example.masrobot.klikpesanantar.BaseContract.Presenter
  6. import com.example.masrobot.klikpesanantar.MainApp.Model.Kategori
  7. import com.example.masrobot.klikpesanantar.MainApp.Model.Users
  8. import com.example.masrobot.klikpesanantar.R
  9. import com.google.android.gms.auth.api.signin.GoogleSignInAccount
  10. import com.google.firebase.auth.FirebaseAuth
  11. import com.google.firebase.auth.FirebaseUser
  12. import com.google.firebase.auth.GoogleAuthProvider
  13. import com.google.firebase.database.*
  14.  
  15.  
  16. class MainPresenter : Presenter<MainView> {
  17.     // Load MainView
  18.     private var mView: MainView? = null
  19.  
  20.     private val TAG: String = MainPresenter::class.java.simpleName
  21.  
  22.     // Choose an arbitrary request code value
  23.     val RC_SIGN_IN: Int = 123
  24.  
  25.     // Firebase Reference
  26.     private var mDatabase: DatabaseReference? = null
  27.     private var mValueEventListener: ValueEventListener? = null
  28.     private var mAuth: FirebaseAuth? = null
  29.     private var mUser: FirebaseUser? = null
  30.     private var mGoogleSignInAccount: GoogleSignInAccount? = null
  31.  
  32.     // Attach UI
  33.     override fun onAttach(view: MainView) {
  34.         mView = view
  35.     }
  36.  
  37.     // Detach UI
  38.     override fun onDetach() {
  39.         mView = null
  40.     }
  41.  
  42.     // Show view logic here
  43.     // Get Kategori from firebase
  44.     fun onCreate() {
  45.         // initialize firebase
  46.         // Firebase Realtime Database
  47.         mDatabase = FirebaseDatabase.getInstance().getReference()
  48.  
  49.         // Firebase Authentication
  50.         mAuth = FirebaseAuth.getInstance()
  51.  
  52.         // Firebase User
  53.         mUser = mAuth?.currentUser
  54.  
  55.         // Navigation Drawer Kondisi auth user ?
  56.         navigationDrawerAuth()
  57.     }
  58.  
  59.     // firebase Auth User is True ?
  60.     fun fireGetCurrentUserAuth(): Boolean = mUser != null
  61.  
  62.     // Navigation Drawer auth user ?
  63.     fun navigationDrawerAuth() {
  64.         if (fireGetCurrentUserAuth()){
  65.             mView?.menuItemWithAuth()
  66.         } else {
  67.             mView?.menuItemWithoutAuth()
  68.         }
  69.     }
  70.  
  71.     fun googleCredential() {
  72.         val mGoogleAuthCredential =
  73.                 GoogleAuthProvider.getCredential(mGoogleSignInAccount?.idToken, null)
  74.     }
  75.  
  76.     fun saveUserProfile() {
  77.         // Firebase User Database Reference
  78.         val mUserChild = mDatabase?.child("users")?.child(mUser?.uid)
  79.         if (fireGetCurrentUserAuth()) {
  80.             mUserChild?.child("uid")?.setValue(mUser?.uid)
  81.             mUserChild?.child("email")?.setValue(mUser?.email)
  82.             mUserChild?.child("telepon")?.setValue(mUser?.phoneNumber)
  83.         }
  84.     }
  85.  
  86.     fun onStart() {
  87.         // Firebase Listener start here
  88.         val valueEventListener = object : ValueEventListener {
  89.             // Menampilkan, Membaca, dan Mendeteksi Data
  90.             override fun onDataChange(dataSnapshot: DataSnapshot?) {
  91.                 // Lokasi Data POKO
  92.                 val kategoriDatas = ArrayList<Kategori>()
  93.  
  94.                 // Perulangan untuk menyimpan Data ke POKO
  95.                 for (kategoriSnapshot in dataSnapshot!!.getChildren()) {
  96.                     val mainData = kategoriSnapshot.getValue(Kategori::class.java)
  97.                     kategoriDatas.add(mainData!!)
  98.                 }
  99.  
  100.                 // Passing Data ke View
  101.                 mView?.refreshKategoriList(kategoriDatas)
  102.             }
  103.  
  104.             // Jika mengalami kegagalan akan dilempar ke error
  105.             override fun onCancelled(databaseError: DatabaseError?) {
  106.                 Log.w(TAG, "LoadKategori:onCancelled", databaseError?.toException())
  107.                 mView?.toast("LoadKategori:onCancelled ${databaseError?.message}")
  108.             }
  109.         }
  110.  
  111.         // Query untuk mengambil kategori
  112.         mDatabase?.child("kategori")?.orderByKey()?.addValueEventListener(valueEventListener)
  113.         mValueEventListener = valueEventListener
  114.     }
  115.  
  116.     fun onStop() {
  117.         // Melepas Listener untuk menghapus callback Firebase
  118.         if (mValueEventListener != null) {
  119.             mDatabase?.child("kategori")?.removeEventListener(mValueEventListener)
  120.         }
  121.     }
  122.  
  123.     fun onResume() {
  124.         // Navigation Drawer Kondisi auth user ?
  125.         navigationDrawerAuth()
  126.     }
  127.  
  128.     fun navigationItemSelected(item: MenuItem): Boolean {
  129.         // Handle navigation view item clicks here.
  130.         when (item.itemId) {
  131.             R.id.nav_beranda -> {
  132.  
  133.             }
  134.             R.id.nav_favorit -> {
  135.  
  136.             }
  137.             R.id.nav_toko -> {
  138.  
  139.             }
  140.             R.id.nav_pengaturan -> {
  141.  
  142.             }
  143.             R.id.nav_bantuan -> {
  144.  
  145.             }
  146.             R.id.nav_tentang -> {
  147.  
  148.             }
  149.             R.id.nav_masuk -> {
  150.                 mView?.signIn(RC_SIGN_IN)
  151.             }
  152.             R.id.nav_keluar -> {
  153.                 mView?.signOut()
  154.             }
  155.         }
  156.  
  157.         mView?.closeDrawer()
  158.         return true
  159.     }
  160. }
Add Comment
Please, Sign In to add comment