From 9425b539fe8a18b279fb1a8de048d4d7fb81ace0 Mon Sep 17 00:00:00 2001 From: Johanes Lee <13521148@std.stei.itb.ac.id> Date: Mon, 1 Apr 2024 06:41:18 +0000 Subject: [PATCH] Feat/transactions --- .../transaction/TransactionViewModel.kt | 2 +- .../bondoman/views/activities/MainActivity.kt | 40 +++++++++++++++---- app/src/main/res/navigation/nav_graph.xml | 4 +- 3 files changed, 36 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/example/bondoman/data/viewmodels/transaction/TransactionViewModel.kt b/app/src/main/java/com/example/bondoman/data/viewmodels/transaction/TransactionViewModel.kt index 2341bf8..2f61bb3 100644 --- a/app/src/main/java/com/example/bondoman/data/viewmodels/transaction/TransactionViewModel.kt +++ b/app/src/main/java/com/example/bondoman/data/viewmodels/transaction/TransactionViewModel.kt @@ -56,7 +56,7 @@ class TransactionViewModel( Transaction( title = title, owner = currentUserNim, - amount = amount, + amount = Long.MAX_VALUE, category = category, location = location, ) 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 daccd2f..b27b052 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 @@ -64,6 +64,8 @@ class MainActivity : AppCompatActivity(), ParentActivityService { private var isConnectionlost: Boolean = false private var isOnConnectionLostFragment: Boolean = false private var isOnBack: Boolean = false + private val connectionRequiredFragmentIds: MutableList<Int> = mutableListOf() + private var hasMovedFromConnectionLostFragment: Boolean = false private val expiryReceiver = ExpiryBroadcastReceiver() @@ -182,6 +184,8 @@ class MainActivity : AppCompatActivity(), ParentActivityService { ).show() } + private fun addConnectionRequiredFragment(fragmentId: Int) { + this.connectionRequiredFragmentIds.add(fragmentId) override fun getEmail(): String { return PreferencesManager.getString(this, "email") ?: "" } @@ -206,6 +210,8 @@ class MainActivity : AppCompatActivity(), ParentActivityService { } private fun configureNavigation() { + this.addConnectionRequiredFragment(R.id.scanReceiptFragment) + val navbar = findViewById<BottomNavigationView>(R.id.navbar) val navHostFragment = supportFragmentManager.findFragmentById(R.id.fragment_container) as NavHostFragment @@ -223,8 +229,9 @@ class MainActivity : AppCompatActivity(), ParentActivityService { destinationListeners.forEach { it.invoke(destination.id) } - if (destination.id != R.id.ConnectionLostFragment) { + if (destination.id != R.id.connectionLostFragment) { isOnConnectionLostFragment = false + hasMovedFromConnectionLostFragment = true } // handle back navigation @@ -240,7 +247,9 @@ class MainActivity : AppCompatActivity(), ParentActivityService { } // remove old ConnectionLostFragment - if (isOnConnectionLostFragment && destination.id == R.id.ConnectionLostFragment) { + if ((isOnConnectionLostFragment || hasMovedFromConnectionLostFragment) + && destination.id == R.id.connectionLostFragment + ) { navController.popBackStack() return@addOnDestinationChangedListener } @@ -274,16 +283,19 @@ class MainActivity : AppCompatActivity(), ParentActivityService { // handle connection lost fragment if (isConnectionlost) { - if (destination.id != R.id.ConnectionLostFragment) { + if (destination.id in connectionRequiredFragmentIds) { + hasMovedFromConnectionLostFragment = false navController.navigate(R.id.action_global_to_ConnectionLostFragment) - } else { + return@addOnDestinationChangedListener + } else if (destination.id == R.id.connectionLostFragment) { isOnConnectionLostFragment = true + hasMovedFromConnectionLostFragment = false + return@addOnDestinationChangedListener } - return@addOnDestinationChangedListener } // ignore existing connection lost page on stack - if (destination.id == R.id.ConnectionLostFragment) { + if (destination.id == R.id.connectionLostFragment) { navController.popBackStack() } @@ -331,6 +343,13 @@ class MainActivity : AppCompatActivity(), ParentActivityService { object : ConnectivityManager.NetworkCallback() { override fun onAvailable(network: Network) { + if (isConnectionlost) { + showToast( + "Connection found", + Toast.LENGTH_SHORT + ) + } + Handler(Looper.getMainLooper()).post { if (isConnectionlost) { isConnectionlost = false @@ -342,7 +361,14 @@ class MainActivity : AppCompatActivity(), ParentActivityService { override fun onLost(network: Network) { Handler(Looper.getMainLooper()).post { isConnectionlost = true - navController.navigate(R.id.action_global_to_ConnectionLostFragment) + if (currentFragmentId in connectionRequiredFragmentIds) { + navController.navigate(R.id.action_global_to_ConnectionLostFragment) + } + + showToast( + "Connection lost", + Toast.LENGTH_SHORT + ) } } diff --git a/app/src/main/res/navigation/nav_graph.xml b/app/src/main/res/navigation/nav_graph.xml index 7e7cd9d..0ac6676 100644 --- a/app/src/main/res/navigation/nav_graph.xml +++ b/app/src/main/res/navigation/nav_graph.xml @@ -80,7 +80,7 @@ android:label="@string/menu_title_charts" tools:layout="@layout/fragment_graph" /> <fragment - android:id="@+id/ConnectionLostFragment" + android:id="@+id/connectionLostFragment" android:name="com.example.bondoman.views.fragments.ConnectionLostFragment" tools:layout="@layout/fragment_connection_lost" /> <fragment @@ -97,5 +97,5 @@ </fragment> <action android:id="@+id/action_global_to_ConnectionLostFragment" - app:destination="@id/ConnectionLostFragment" /> + app:destination="@id/connectionLostFragment" /> </navigation> -- GitLab