diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 4190e448b161c2f9bcf48d3b2a49d372657c9b1a..e55f0a7a984a0cbf707958ae60b2b92f7793b918 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,7 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools">
-
+    
+    <uses-permission android:name="android.permission.INTERNET"/>
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
     <application
         android:allowBackup="true"
         android:dataExtractionRules="@xml/data_extraction_rules"
@@ -12,6 +14,7 @@
         android:supportsRtl="true"
         android:theme="@style/Theme.BondoYap"
         tools:targetApi="31">
+
         <activity
             android:name=".MainActivity"
             android:exported="true"
diff --git a/app/src/main/java/com/example/bondoyap/MainActivity.kt b/app/src/main/java/com/example/bondoyap/MainActivity.kt
index 1517b69c822338dbbd87d5d5c06398ab414e484b..2e8d94000a9261abe7a5da083f5c0373dda0efb5 100644
--- a/app/src/main/java/com/example/bondoyap/MainActivity.kt
+++ b/app/src/main/java/com/example/bondoyap/MainActivity.kt
@@ -3,26 +3,40 @@ package com.example.bondoyap
 import android.content.Context
 import android.content.SharedPreferences
 import android.os.Bundle
-import com.google.android.material.bottomnavigation.BottomNavigationView
+import android.widget.Toast
 import androidx.appcompat.app.AppCompatActivity
 import androidx.navigation.findNavController
 import androidx.navigation.ui.AppBarConfiguration
 import androidx.navigation.ui.setupActionBarWithNavController
 import androidx.navigation.ui.setupWithNavController
 import com.example.bondoyap.databinding.ActivityMainBinding
+import com.example.bondoyap.util.network.NetworkObserver
+import com.google.android.material.bottomnavigation.BottomNavigationView
+
 
 class MainActivity : AppCompatActivity() {
 
     private lateinit var binding: ActivityMainBinding
     private lateinit var sharedPreferences: SharedPreferences
+    private lateinit var networkObserver: NetworkObserver
 
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
 
+        networkObserver = NetworkObserver(applicationContext)
+        networkObserver.isConnected.observe(this) { isConnected ->
+            if (isConnected) {
+                Toast.makeText(this, "Koneksi terhubung", Toast.LENGTH_SHORT).show()
+            } else {
+                Toast.makeText(this, "Koneksi terputus", Toast.LENGTH_SHORT).show()
+            }
+        }
+
         binding = ActivityMainBinding.inflate(layoutInflater)
         setContentView(binding.root)
 
+
         val navView: BottomNavigationView = binding.navView
 
         val navController = findNavController(R.id.nav_host_fragment_activity_main)
@@ -32,9 +46,13 @@ class MainActivity : AppCompatActivity() {
         if (!isLoggedIn()) {
             navController.navigate(R.id.navigation_login)
         }
-        val appBarConfiguration = AppBarConfiguration(setOf(
+
+        val appBarConfiguration = AppBarConfiguration(
+            setOf(
                 R.id.navigation_settings, R.id.navigation_transactions, R.id.navigation_scanner,
-                R.id.navigation_graph, R.id.navigation_login))
+                R.id.navigation_graph, R.id.navigation_login
+            )
+        )
 
         setupActionBarWithNavController(navController, appBarConfiguration)
 
@@ -48,6 +66,7 @@ class MainActivity : AppCompatActivity() {
                 navView.visibility = BottomNavigationView.VISIBLE
             }
         }
+
     }
 
     private fun isLoggedIn(): Boolean {
diff --git a/app/src/main/java/com/example/bondoyap/util/network/NetworkObserver.kt b/app/src/main/java/com/example/bondoyap/util/network/NetworkObserver.kt
new file mode 100644
index 0000000000000000000000000000000000000000..49375b05210c6684847796ae97f8f7d7b57714d6
--- /dev/null
+++ b/app/src/main/java/com/example/bondoyap/util/network/NetworkObserver.kt
@@ -0,0 +1,28 @@
+package com.example.bondoyap.util.network
+
+import android.content.Context
+import android.net.ConnectivityManager
+import android.net.Network
+import androidx.lifecycle.LiveData
+import androidx.lifecycle.MutableLiveData
+
+class NetworkObserver(context: Context) {
+    private val connectivityManager =
+        context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
+
+    private val _isConnected = MutableLiveData<Boolean>()
+    val isConnected: LiveData<Boolean> = _isConnected
+
+    init {
+        connectivityManager.registerDefaultNetworkCallback(object :
+            ConnectivityManager.NetworkCallback() {
+            override fun onAvailable(network: Network) {
+                _isConnected.postValue(true)
+            }
+
+            override fun onLost(network: Network) {
+                _isConnected.postValue(false)
+            }
+        })
+    }
+}