diff --git a/app/src/main/java/pbd/tubes/exe_android/MainActivity.kt b/app/src/main/java/pbd/tubes/exe_android/MainActivity.kt index 6da30dcaeb9d4bb1bbf900fc6fdf3adaf4f9ebc8..32d819fe96354ebc8bd56414013c35446ae1f8f2 100644 --- a/app/src/main/java/pbd/tubes/exe_android/MainActivity.kt +++ b/app/src/main/java/pbd/tubes/exe_android/MainActivity.kt @@ -1,10 +1,7 @@ package pbd.tubes.exe_android -import android.content.Context import android.content.Intent import android.content.res.Configuration -import android.net.ConnectivityManager -import android.net.NetworkCapabilities import android.os.Bundle import android.util.Log import androidx.appcompat.app.AlertDialog @@ -15,26 +12,34 @@ import androidx.navigation.ui.setupActionBarWithNavController import androidx.navigation.ui.setupWithNavController import com.google.android.material.navigation.NavigationBarView import pbd.tubes.exe_android.databinding.ActivityMainBinding +import androidx.lifecycle.Observer +import pbd.tubes.exe_android.ui.NetworkSensing.NetworkLiveData +import pbd.tubes.exe_android.ui.login.TokenExpirationCheckService +import pbd.tubes.exe_android.ui.transactions.AddTransactionFragment class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding -// private var isFabVisible : Boolean = true - private var isLoggedIn: Boolean = false + private val TAG_FRAGMENT = "broadcastFragment" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - if (!isUserLoggedIn()) { - // Redirect to LoginActivity if not logged in startActivity(Intent(this, LoginActivity::class.java)) - finish() // Finish MainActivity so the user cannot come back without logging in + finish() return } -// val sharedPreferences = getSharedPreferences("user_session", MODE_PRIVATE) -// sharedPreferences.edit().clear().apply() - + + val networkStatusLiveData = NetworkLiveData(this) + networkStatusLiveData.observe(this, Observer { isConnected -> + if (!isConnected) { + showNoInternetPopup() + } + }) + + Log.d("Main", "Ini masuk main") + activateBroadcastReceiverFragment() binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) val navController = findNavController(R.id.nav_host_fragment_activity_main) @@ -74,37 +79,39 @@ class MainActivity : AppCompatActivity() { setupActionBarWithNavController(navController, appBarConfiguration) navigationBarView.setupWithNavController(navController) } + override fun onPause() { + super.onPause() + val serviceIntent = Intent(this, TokenExpirationCheckService::class.java) + stopService(serviceIntent) + + } + override fun onResume() { + super.onResume() + val serviceIntent = Intent(this, TokenExpirationCheckService::class.java) + startService(serviceIntent) + } + private fun isUserLoggedIn(): Boolean { val sharedPreferences = getSharedPreferences("user_session", MODE_PRIVATE) return sharedPreferences.contains("token") } - private fun checkNetworkConnectivity() { - val connectivityManager = getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager - val network = connectivityManager.activeNetwork - - val networkCapabilities = connectivityManager.getNetworkCapabilities(network) - - // Check if the network is connected and has internet capability - if (networkCapabilities != null && - (networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) || - networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) && - networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)) { - // Device is connected to the internet - } else { - // Device is not connected to the internet - showNoInternetPopup() - } + private fun showNoInternetPopup() { + AlertDialog.Builder(this) + .setTitle("No Internet Connection") + .setMessage("Please check your internet connection and try again.") + .setPositiveButton("OK", null) + .show() } - private fun showNoInternetPopup() { - val builder = AlertDialog.Builder(this) - builder.setTitle("No Internet Connection") - builder.setMessage("Please check your internet connection and try again.") - builder.setPositiveButton("OK") { dialog, _ -> - dialog.dismiss() + private fun activateBroadcastReceiverFragment() { + // Check if the fragment is already added + if (supportFragmentManager.findFragmentByTag(TAG_FRAGMENT) == null) { + // If not added, add the fragment dynamically + val fragmentTransaction = supportFragmentManager.beginTransaction() + fragmentTransaction.add(AddTransactionFragment(), TAG_FRAGMENT) + fragmentTransaction.commit() } - val dialog = builder.create() - dialog.show() } + } \ No newline at end of file