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