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) + } + }) + } +}