From cafee6eb8b96a46ec1b803271dc62fb78b0517c7 Mon Sep 17 00:00:00 2001
From: Altair1618 <farhannabilsuryono3@gmail.com>
Date: Mon, 1 Apr 2024 10:14:18 +0700
Subject: [PATCH] feat: implement email and nim getter in activity

---
 .../services/receivers/ExpiryBroadcastReceiver.kt        | 2 ++
 .../example/bondoman/views/activities/LoginActivity.kt   | 8 ++++++++
 .../example/bondoman/views/activities/MainActivity.kt    | 9 +++++++++
 .../example/bondoman/views/fragments/SettingsFragment.kt | 2 ++
 .../views/utils/interfaces/ParentActivityService.kt      | 4 ++++
 5 files changed, 25 insertions(+)

diff --git a/app/src/main/java/com/example/bondoman/services/receivers/ExpiryBroadcastReceiver.kt b/app/src/main/java/com/example/bondoman/services/receivers/ExpiryBroadcastReceiver.kt
index ba96f99..8880445 100644
--- a/app/src/main/java/com/example/bondoman/services/receivers/ExpiryBroadcastReceiver.kt
+++ b/app/src/main/java/com/example/bondoman/services/receivers/ExpiryBroadcastReceiver.kt
@@ -13,6 +13,8 @@ class ExpiryBroadcastReceiver : BroadcastReceiver() {
 	) {
 		if (intent?.action == "com.example.bondoman.services.LOGOUT_TIMEOUT") {
 			PreferencesManager.remove(context!!, "token", true)
+			PreferencesManager.remove(context, "nim", true)
+			PreferencesManager.remove(context, "email", true)
 
 			val newIntent = Intent(context, LoginActivity::class.java)
 			newIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
diff --git a/app/src/main/java/com/example/bondoman/views/activities/LoginActivity.kt b/app/src/main/java/com/example/bondoman/views/activities/LoginActivity.kt
index c97cfdd..75a5026 100644
--- a/app/src/main/java/com/example/bondoman/views/activities/LoginActivity.kt
+++ b/app/src/main/java/com/example/bondoman/views/activities/LoginActivity.kt
@@ -86,7 +86,11 @@ class LoginActivity : AppCompatActivity() {
 				} else {
 					startTimerService(expiryDuration)
 
+					val nim = email.substringBefore("@")
+
 					PreferencesManager.putString(this, "token", response.token ?: "", true)
+					PreferencesManager.putString(this, "nim", nim, true)
+					PreferencesManager.putString(this, "email", email, true)
 					val intent = Intent(this, MainActivity::class.java)
 					startActivity(intent)
 					finish()
@@ -116,6 +120,8 @@ class LoginActivity : AppCompatActivity() {
 				if (response.error != null) {
 					Log.e("LoginActivity", response.error)
 					PreferencesManager.remove(this, "token", true)
+					PreferencesManager.remove(this, "nim", true)
+					PreferencesManager.remove(this, "email", true)
 					viewModel.resetTokenResponse()
 					return@Observer
 				}
@@ -124,6 +130,8 @@ class LoginActivity : AppCompatActivity() {
 				if (response.exp != null && response.exp < currentTime) {
 					Log.i("LoginActivity", "Token expired")
 					PreferencesManager.remove(this, "token", true)
+					PreferencesManager.remove(this, "nim", true)
+					PreferencesManager.remove(this, "email", true)
 					viewModel.resetTokenResponse()
 					return@Observer
 				}
diff --git a/app/src/main/java/com/example/bondoman/views/activities/MainActivity.kt b/app/src/main/java/com/example/bondoman/views/activities/MainActivity.kt
index 6ca9f08..fd7aef2 100644
--- a/app/src/main/java/com/example/bondoman/views/activities/MainActivity.kt
+++ b/app/src/main/java/com/example/bondoman/views/activities/MainActivity.kt
@@ -26,6 +26,7 @@ import androidx.navigation.fragment.NavHostFragment
 import androidx.navigation.ui.setupWithNavController
 import com.example.bondoman.MainApplication
 import com.example.bondoman.R
+import com.example.bondoman.data.utils.PreferencesManager
 import com.example.bondoman.data.viewmodels.transaction.TransactionViewModel
 import com.example.bondoman.data.viewmodels.transaction.TransactionViewModelFactory
 import com.example.bondoman.databinding.ActivityMainBinding
@@ -179,6 +180,14 @@ class MainActivity : AppCompatActivity(), ParentActivityService {
 		).show()
 	}
 
+	override fun getEmail(): String {
+		return PreferencesManager.getString(this, "email") ?: ""
+	}
+
+	override fun getNIM(): String {
+		return PreferencesManager.getString(this, "nim") ?: ""
+	}
+
 	private fun initializeComponents() {
 		mainLayout = binding.main
 		backButton = binding.backButton
diff --git a/app/src/main/java/com/example/bondoman/views/fragments/SettingsFragment.kt b/app/src/main/java/com/example/bondoman/views/fragments/SettingsFragment.kt
index 18e8110..501c6ff 100644
--- a/app/src/main/java/com/example/bondoman/views/fragments/SettingsFragment.kt
+++ b/app/src/main/java/com/example/bondoman/views/fragments/SettingsFragment.kt
@@ -151,6 +151,8 @@ class SettingsFragment : Fragment() {
 
 	private fun onLogoutButtonClick() {
 		PreferencesManager.remove(requireActivity(), "token", true)
+		PreferencesManager.remove(requireActivity(), "nim", true)
+		PreferencesManager.remove(requireActivity(), "email", true)
 
 		val serviceIntent = Intent(requireActivity(), ExpiryService::class.java)
 		requireActivity().stopService(serviceIntent)
diff --git a/app/src/main/java/com/example/bondoman/views/utils/interfaces/ParentActivityService.kt b/app/src/main/java/com/example/bondoman/views/utils/interfaces/ParentActivityService.kt
index 20bff28..aa12d3d 100644
--- a/app/src/main/java/com/example/bondoman/views/utils/interfaces/ParentActivityService.kt
+++ b/app/src/main/java/com/example/bondoman/views/utils/interfaces/ParentActivityService.kt
@@ -49,4 +49,8 @@ interface ParentActivityService {
 		message: String,
 		duration: Int,
 	)
+
+	fun getEmail(): String
+
+	fun getNIM(): String
 }
-- 
GitLab