From 325380253ee7c650db9857aec69183b36160e8bc Mon Sep 17 00:00:00 2001
From: Haidar <16521522@mahasiswa.itb.ac.id>
Date: Fri, 5 Apr 2024 08:27:39 +0700
Subject: [PATCH] feat: add jwt service response and network sensing

---
 .../tubes/exe_android/data/TokenResponse.kt   |  5 +++
 .../ui/NetworkSensing/NetworkLiveData.kt      | 42 +++++++++++++++++++
 2 files changed, 47 insertions(+)
 create mode 100644 app/src/main/java/pbd/tubes/exe_android/data/TokenResponse.kt
 create mode 100644 app/src/main/java/pbd/tubes/exe_android/ui/NetworkSensing/NetworkLiveData.kt

diff --git a/app/src/main/java/pbd/tubes/exe_android/data/TokenResponse.kt b/app/src/main/java/pbd/tubes/exe_android/data/TokenResponse.kt
new file mode 100644
index 0000000..3bfada4
--- /dev/null
+++ b/app/src/main/java/pbd/tubes/exe_android/data/TokenResponse.kt
@@ -0,0 +1,5 @@
+package pbd.tubes.exe_android.data
+
+data class TokenResponse (
+    val exp: Long
+)
diff --git a/app/src/main/java/pbd/tubes/exe_android/ui/NetworkSensing/NetworkLiveData.kt b/app/src/main/java/pbd/tubes/exe_android/ui/NetworkSensing/NetworkLiveData.kt
new file mode 100644
index 0000000..6ea0da0
--- /dev/null
+++ b/app/src/main/java/pbd/tubes/exe_android/ui/NetworkSensing/NetworkLiveData.kt
@@ -0,0 +1,42 @@
+package pbd.tubes.exe_android.ui.NetworkSensing
+
+import android.content.Context
+import android.net.ConnectivityManager
+import android.net.Network
+import android.net.NetworkRequest
+import androidx.lifecycle.LiveData
+
+class NetworkLiveData(private val context: Context) : LiveData<Boolean>() {
+
+    private val connectivityManager =
+        context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
+
+    private val networkCallback = object : ConnectivityManager.NetworkCallback() {
+        override fun onAvailable(network: Network) {
+            postValue(true)
+        }
+
+        override fun onLost(network: Network) {
+            postValue(false)
+        }
+    }
+
+    override fun onActive() {
+        super.onActive()
+        registerNetworkCallback()
+    }
+
+    override fun onInactive() {
+        super.onInactive()
+        unregisterNetworkCallback()
+    }
+
+    private fun registerNetworkCallback() {
+        val builder = NetworkRequest.Builder()
+        connectivityManager.registerNetworkCallback(builder.build(), networkCallback)
+    }
+
+    private fun unregisterNetworkCallback() {
+        connectivityManager.unregisterNetworkCallback(networkCallback)
+    }
+}
\ No newline at end of file
-- 
GitLab