diff --git a/app/src/main/java/pbd/tubes/exe_android/ui/scan/ScanFragment.kt b/app/src/main/java/pbd/tubes/exe_android/ui/scan/ScanFragment.kt
index 04b972b086c3044f6aea03778659120d03d78f17..1fa15afc16f4f210841ab0a2747cd8311e43bf68 100644
--- a/app/src/main/java/pbd/tubes/exe_android/ui/scan/ScanFragment.kt
+++ b/app/src/main/java/pbd/tubes/exe_android/ui/scan/ScanFragment.kt
@@ -34,9 +34,7 @@ import okhttp3.OkHttpClient
 import okhttp3.RequestBody
 import pbd.tubes.exe_android.R
 import pbd.tubes.exe_android.data.api.ApiService
-import pbd.tubes.exe_android.data.api.upload.toTransaction
 import pbd.tubes.exe_android.databinding.FragmentScanBinding
-import pbd.tubes.exe_android.models.Transaction
 import retrofit2.Retrofit
 import retrofit2.converter.gson.GsonConverterFactory
 import java.io.File
@@ -146,12 +144,7 @@ class ScanFragment : Fragment() {
                     Log.d("MyApp", "Receiving response failed, ${uploadResponse.message()}")
                 }
                 Log.d("MyApp", uploadResponse.body()?.items?.items.toString())
-                viewModel.listOfTransactions?.observe(viewLifecycleOwner) {transactionItem->
-                    viewModel.convertResponseToTransactionsList(uploadResponse.body()?.items?.items!!)
-                        .forEach {
-                            transactionItem.add(it)
-                        }
-                }
+                viewModel.submitTransactions(uploadResponse.body()?.items?.items!!)
 
             } catch (e : Exception) {
                 Log.e("MyApp", "jir exception: $e")
diff --git a/app/src/main/java/pbd/tubes/exe_android/ui/scan/ScanViewModel.kt b/app/src/main/java/pbd/tubes/exe_android/ui/scan/ScanViewModel.kt
index 1e53de31be8852d1fb02ca4355056392cf5f37df..95f6fe8c3a7f989005b5497f4252bc21dacce37e 100644
--- a/app/src/main/java/pbd/tubes/exe_android/ui/scan/ScanViewModel.kt
+++ b/app/src/main/java/pbd/tubes/exe_android/ui/scan/ScanViewModel.kt
@@ -1,29 +1,24 @@
 package pbd.tubes.exe_android.ui.scan
 
 import android.util.Log
-import androidx.lifecycle.MutableLiveData
 import androidx.lifecycle.ViewModel
 import androidx.lifecycle.ViewModelProvider
 import androidx.lifecycle.ViewModelProvider.AndroidViewModelFactory.Companion.APPLICATION_KEY
+import androidx.lifecycle.viewModelScope
 import androidx.lifecycle.viewmodel.CreationExtras
+import kotlinx.coroutines.launch
 import pbd.tubes.exe_android.BondomanApp
 import pbd.tubes.exe_android.data.api.upload.Item
 import pbd.tubes.exe_android.data.api.upload.toTransaction
 import pbd.tubes.exe_android.data.database.TransactionsRepository
-import pbd.tubes.exe_android.models.Transaction
 
 class ScanViewModel(private val transactionsRepository : TransactionsRepository) : ViewModel() {
-
-    var listOfTransactions : MutableLiveData<MutableList<Transaction>>? = null
-    private suspend fun submitTransactions(){
-        listOfTransactions!!.value!!.forEach {
-            transactionsRepository.insertTransaction(it)
-            Log.d("MyApp", "data : $it.name $it.nominal $it.category $it.category $it.location $it.date")
-        }
-    }
-    fun convertResponseToTransactionsList(response: List<Item>) : List<Transaction>{
-        return response.map {
-            it.toTransaction()
+    fun submitTransactions(response: List<Item>){
+        viewModelScope.launch {
+            response.map {
+                transactionsRepository.insertTransaction(it.toTransaction())
+                Log.d("MyApp", "data : $it.name $it.nominal $it.category $it.category $it.location $it.date")
+            }
         }
     }
 
diff --git a/app/src/main/java/pbd/tubes/exe_android/ui/transactions/AddTransactionFragment.kt b/app/src/main/java/pbd/tubes/exe_android/ui/transactions/AddTransactionFragment.kt
index bfb5d8e273c59a71132521b11d3cf5cffd082682..71255c71d48a18bef549700855c82ab9d0026980 100644
--- a/app/src/main/java/pbd/tubes/exe_android/ui/transactions/AddTransactionFragment.kt
+++ b/app/src/main/java/pbd/tubes/exe_android/ui/transactions/AddTransactionFragment.kt
@@ -4,6 +4,7 @@ import android.content.BroadcastReceiver
 import android.content.Context
 import android.content.Intent
 import android.content.IntentFilter
+import android.os.Build
 import android.os.Bundle
 import android.util.Log
 import android.view.LayoutInflater
@@ -11,6 +12,7 @@ import android.view.View
 import android.view.ViewGroup
 import android.widget.RadioButton
 import android.widget.Toast
+import androidx.annotation.RequiresApi
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.viewModels
 import androidx.lifecycle.lifecycleScope
@@ -23,21 +25,16 @@ import pbd.tubes.exe_android.models.TransactionCategory
 
 class AddTransactionFragment : Fragment() {
     private var _binding: FragmentAddTransactionBinding? = null
-    private val intentFilter = IntentFilter("pbd.tubes.exe_android.ACTION_RANDOMIZE_TRANSAKSI")
-    private val receiver : BroadcastReceiver = object : BroadcastReceiver(){
-        override fun onReceive(context: Context, intent: Intent){
-            val randomNumber = intent.getIntExtra("randomNumber", 0)
-            random = randomNumber
-//            Log.d("Ini random", randomNumber.toString())
-        }
-    }
+    private val receiver = RandomizeTransactionReceiver()
     // This property is only valid between onCreateView and
     // onDestroyView.
     private val binding get() = _binding!!
     private val viewModel: AddTransactionViewModel by viewModels(factoryProducer = { AddTransactionViewModel.Factory })
+    @RequiresApi(Build.VERSION_CODES.TIRAMISU)
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
-        requireContext().registerReceiver(receiver, intentFilter)
+        val intentFilter = IntentFilter("pbd.tubes.exe_android.ACTION_RANDOMIZE_TRANSAKSI")
+        requireContext().registerReceiver(receiver, intentFilter, Context.RECEIVER_NOT_EXPORTED)
     }
 
     override fun onCreateView(
@@ -55,7 +52,6 @@ class AddTransactionFragment : Fragment() {
         }
 
         val transactionNominal: TextInputLayout = binding.transactionNominalInputLayout
-//        Log.d("NilaiRandom", "dapetnilairandom $random")
         viewModel.trNominal.observe(viewLifecycleOwner) {
             transactionNominal.editText?.setText(it)
         }
@@ -114,6 +110,14 @@ class AddTransactionFragment : Fragment() {
         return root
     }
 
+    inner class RandomizeTransactionReceiver :  BroadcastReceiver(){
+        override fun onReceive(context: Context, intent: Intent){
+            val randomNumber = intent.getIntExtra("randomNumber", 0)
+            random = randomNumber
+//            Log.d("Ini random", randomNumber.toString())
+        }
+    }
+
     companion object{
         private var random: Int? = null
     }