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 }