From 1b07e66bf0ab76bec620e9cb1048b55a4743eb6c Mon Sep 17 00:00:00 2001
From: naufal <89512179+nomsf@users.noreply.github.com>
Date: Fri, 5 Apr 2024 16:57:18 +0700
Subject: [PATCH] braodcast

---
 .../com/example/myapplication/MainActivity.kt | 13 +++++++++
 .../ui/settings/SettingsFragment.kt           | 10 +++++--
 .../util/AppBroadcastReceiver.kt              | 28 +++++++++++++++++++
 3 files changed, 48 insertions(+), 3 deletions(-)
 create mode 100644 app/src/main/java/com/example/myapplication/util/AppBroadcastReceiver.kt

diff --git a/app/src/main/java/com/example/myapplication/MainActivity.kt b/app/src/main/java/com/example/myapplication/MainActivity.kt
index 78a6337..ccea2b3 100644
--- a/app/src/main/java/com/example/myapplication/MainActivity.kt
+++ b/app/src/main/java/com/example/myapplication/MainActivity.kt
@@ -2,6 +2,7 @@ package com.example.myapplication
 
 import android.content.Context
 import android.content.Intent
+import android.content.IntentFilter
 import android.net.ConnectivityManager
 import android.net.NetworkCapabilities
 import android.os.Bundle
@@ -23,12 +24,14 @@ import com.example.myapplication.util.EventBus
 import com.example.myapplication.util.SecretPreference
 import java.util.concurrent.TimeUnit
 import com.example.myapplication.ui.settings.SettingsViewModel
+import com.example.myapplication.util.AppBroadcastReceiver
 
 class MainActivity : AppCompatActivity(){
     private lateinit var binding: ActivityMainBinding
     private lateinit var secretPreference : SecretPreference
     private val checkConnection by lazy { CheckConnection(application) }
     private val connected : MutableLiveData<Boolean> = MutableLiveData(true)
+    private lateinit var receiver: AppBroadcastReceiver
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
@@ -52,6 +55,11 @@ class MainActivity : AppCompatActivity(){
         setupActionBarWithNavController(navController, appBarConfiguration)
         navView.setupWithNavController(navController)
 
+        receiver = AppBroadcastReceiver()
+        val filter = IntentFilter("com.example.myapplication.ui.transactions.ADD_TRANSACTION")
+        registerReceiver(receiver, filter)
+
+
 //        val loginIntent = Intent(this, LoginActivity::class.java)
 //        startActivity(loginIntent)
     }
@@ -94,6 +102,11 @@ class MainActivity : AppCompatActivity(){
             }
         }
     }
+
+    override fun onDestroy() {
+        super.onDestroy()
+        unregisterReceiver(receiver)
+    }
     fun updateConnection(value: Boolean) {
         connected.value = value
     }
diff --git a/app/src/main/java/com/example/myapplication/ui/settings/SettingsFragment.kt b/app/src/main/java/com/example/myapplication/ui/settings/SettingsFragment.kt
index a506760..474f66d 100644
--- a/app/src/main/java/com/example/myapplication/ui/settings/SettingsFragment.kt
+++ b/app/src/main/java/com/example/myapplication/ui/settings/SettingsFragment.kt
@@ -19,6 +19,7 @@ import androidx.localbroadcastmanager.content.LocalBroadcastManager
 import com.example.myapplication.MainActivity
 import com.example.myapplication.R
 import com.example.myapplication.databinding.FragmentSettingsBinding
+import kotlin.random.Random
 
 class SettingsFragment : Fragment() {
     private var _binding: FragmentSettingsBinding? = null
@@ -86,10 +87,13 @@ class SettingsFragment : Fragment() {
 
         }
 
+        val titleList = listOf("Makan", "Minum", "Date", "Halo", "Cincin")
+
         randomizeButton.setOnClickListener {
-            val intent = Intent("RANDOMIZE")
-            intent.putExtra("val", "val")
-            requireContext().sendBroadcast(intent)
+            val map = mapOf("title" to Random.nextInt(0, 4 + 1), "nominal" to Random.nextInt(1,1000000 + 1))
+            val intent = Intent("com.example.myapplication.ui.transactions.ADD_TRANSACTION")
+            intent.putExtra("map", HashMap(map))
+            context?.sendBroadcast(intent)
         }
 
         return root
diff --git a/app/src/main/java/com/example/myapplication/util/AppBroadcastReceiver.kt b/app/src/main/java/com/example/myapplication/util/AppBroadcastReceiver.kt
new file mode 100644
index 0000000..314a13f
--- /dev/null
+++ b/app/src/main/java/com/example/myapplication/util/AppBroadcastReceiver.kt
@@ -0,0 +1,28 @@
+package com.example.myapplication.util
+
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.example.myapplication.repository.TransactionRepository
+import kotlinx.coroutines.GlobalScope
+import kotlinx.coroutines.launch
+
+class AppBroadcastReceiver : BroadcastReceiver(){
+    private lateinit var transactionRepository : TransactionRepository
+    override fun onReceive(context: Context?, intent: Intent?) {
+        val map: Map<String, String>? = intent?.getSerializableExtra("map") as? Map<String, String>
+        transactionRepository = TransactionRepository(context!!)
+        GlobalScope.launch {
+            insertToDatabase(map!!, transactionRepository)
+        }
+    }
+
+    suspend fun insertToDatabase(map : Map<String, String>, transactionRepository: TransactionRepository){
+        transactionRepository.insertTransactionQuery(
+            title= map.get("title")!!,
+            nominal = map["nominal"]!!.toString(),
+            kategori = "Randomize",
+            lokasi = "Unknown"
+        )
+    }
+}
\ No newline at end of file
-- 
GitLab