Skip to content
Snippets Groups Projects
Commit 72388863 authored by Matthew Mahendra's avatar Matthew Mahendra
Browse files

refactor: Broadcast Implementation

parent a7b627d9
2 merge requests!27Staging,!25refactor: Broadcast Implementation
...@@ -21,6 +21,18 @@ class SettingsFragment : Fragment() { ...@@ -21,6 +21,18 @@ class SettingsFragment : Fragment() {
} }
private lateinit var viewModel: SettingsViewModel private lateinit var viewModel: SettingsViewModel
private val titles: MutableList<String> = mutableListOf()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
titles.apply {
add("Food")
add("Drink")
add("Apparel")
add("Candi Prambanan")
add("Sepuh WBD")
}
}
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, inflater: LayoutInflater, container: ViewGroup?,
...@@ -41,6 +53,7 @@ class SettingsFragment : Fragment() { ...@@ -41,6 +53,7 @@ class SettingsFragment : Fragment() {
Intent().also { Intent().also {
it.setAction("com.mhn.bondoman.RANDOMIZE_TRANSACTION") it.setAction("com.mhn.bondoman.RANDOMIZE_TRANSACTION")
it.setPackage(requireContext().packageName) it.setPackage(requireContext().packageName)
it.putExtra("selectedTitle", titles.random())
requireContext().sendBroadcast(it) requireContext().sendBroadcast(it)
} }
} }
......
package com.mhn.bondoman.ui.transactions package com.mhn.bondoman.ui.transactions
import android.content.BroadcastReceiver import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter import android.content.IntentFilter
import android.os.Bundle import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
...@@ -13,17 +16,13 @@ import android.widget.Toast ...@@ -13,17 +16,13 @@ import android.widget.Toast
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import androidx.navigation.findNavController import androidx.navigation.findNavController
import com.google.android.material.textfield.TextInputEditText import com.google.android.material.textfield.TextInputEditText
import com.mhn.bondoman.R import com.mhn.bondoman.R
import com.mhn.bondoman.database.AppDatabase
import com.mhn.bondoman.database.KeyStoreManager import com.mhn.bondoman.database.KeyStoreManager
import com.mhn.bondoman.database.Transaction import com.mhn.bondoman.database.Transaction
import com.mhn.bondoman.databinding.FragmentAddTransactionBinding import com.mhn.bondoman.databinding.FragmentAddTransactionBinding
import com.mhn.bondoman.utils.LocationAdapter import com.mhn.bondoman.utils.LocationAdapter
import com.mhn.bondoman.utils.RandomizeReceiver
import kotlinx.coroutines.launch
import java.time.LocalDate import java.time.LocalDate
class TransactionAdd : Fragment() { class TransactionAdd : Fragment() {
...@@ -37,8 +36,9 @@ class TransactionAdd : Fragment() { ...@@ -37,8 +36,9 @@ class TransactionAdd : Fragment() {
private lateinit var addButton: Button private lateinit var addButton: Button
private lateinit var gpsService: LocationAdapter private lateinit var gpsService: LocationAdapter
private lateinit var transactionLocation: String private lateinit var transactionLocation: String
private lateinit var broadcastReceiver: RandomizeReceiver private lateinit var broadcastReceiver: BroadcastReceiver
private lateinit var viewModel: TransactionsViewModel private lateinit var viewModel: TransactionsViewModel
private lateinit var taViewModel: TransactionAddViewModel
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
...@@ -46,6 +46,8 @@ class TransactionAdd : Fragment() { ...@@ -46,6 +46,8 @@ class TransactionAdd : Fragment() {
requireActivity(), requireActivity(),
TransactionsViewModel.FACTORY TransactionsViewModel.FACTORY
)[TransactionsViewModel::class.java] )[TransactionsViewModel::class.java]
taViewModel = ViewModelProvider(requireActivity())[TransactionAddViewModel::class.java]
} }
override fun onCreateView( override fun onCreateView(
...@@ -55,8 +57,6 @@ class TransactionAdd : Fragment() { ...@@ -55,8 +57,6 @@ class TransactionAdd : Fragment() {
): View { ): View {
_binding = FragmentAddTransactionBinding.inflate(inflater, container, false) _binding = FragmentAddTransactionBinding.inflate(inflater, container, false)
broadcastReceiver = RandomizeReceiver.getInstance()
gpsService = LocationAdapter.getInstance(requireActivity()) gpsService = LocationAdapter.getInstance(requireActivity())
etTitle = binding.etTitle etTitle = binding.etTitle
...@@ -117,7 +117,7 @@ class TransactionAdd : Fragment() { ...@@ -117,7 +117,7 @@ class TransactionAdd : Fragment() {
transactionLocation = gpsService.transformToReadable(location) transactionLocation = gpsService.transformToReadable(location)
etLocation.setText(transactionLocation) etLocation.setText(transactionLocation)
} }
binding.etTitle.setText(broadcastReceiver.selectedTitle) etTitle.setText(taViewModel.getTitle())
} catch (e: Exception) { } catch (e: Exception) {
Toast.makeText(requireContext(), "Please allow location", Toast.LENGTH_SHORT).show() Toast.makeText(requireContext(), "Please allow location", Toast.LENGTH_SHORT).show()
} }
...@@ -125,7 +125,13 @@ class TransactionAdd : Fragment() { ...@@ -125,7 +125,13 @@ class TransactionAdd : Fragment() {
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
broadcastReceiver = RandomizeReceiver.getInstance() broadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
val selectedTitle = intent?.getStringExtra("selectedTitle")
taViewModel.setTitle(selectedTitle!!)
Log.d("RANDOMIZE", taViewModel.getTitle())
}
}
val filter = IntentFilter("com.mhn.bondoman.RANDOMIZE_TRANSACTION") val filter = IntentFilter("com.mhn.bondoman.RANDOMIZE_TRANSACTION")
val listenToBroadcastsFromOtherApps = false val listenToBroadcastsFromOtherApps = false
val receiverFlags = if (listenToBroadcastsFromOtherApps) { val receiverFlags = if (listenToBroadcastsFromOtherApps) {
...@@ -135,4 +141,9 @@ class TransactionAdd : Fragment() { ...@@ -135,4 +141,9 @@ class TransactionAdd : Fragment() {
} }
ContextCompat.registerReceiver(requireContext(), broadcastReceiver, filter, receiverFlags) ContextCompat.registerReceiver(requireContext(), broadcastReceiver, filter, receiverFlags)
} }
override fun onDestroy() {
super.onDestroy()
taViewModel.setTitle("")
}
} }
\ No newline at end of file
package com.mhn.bondoman.ui.transactions
import androidx.lifecycle.ViewModel
class TransactionAddViewModel: ViewModel() {
private var title: String = ""
fun setTitle(title: String) {
this@TransactionAddViewModel.title = title
}
fun getTitle() : String {
return title
}
}
\ No newline at end of file
package com.mhn.bondoman.utils
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.widget.Toast
class RandomizeReceiver: BroadcastReceiver() {
companion object {
@Volatile
private var INSTANCE: RandomizeReceiver? = null
fun getInstance(): RandomizeReceiver{
if(INSTANCE == null){
INSTANCE = RandomizeReceiver()
}
return INSTANCE!!
}
}
private val titles: MutableList<String> = mutableListOf()
private var _selectedTitle = ""
val selectedTitle get() = _selectedTitle
init {
titles.apply {
add("Food")
add("Drink")
add("Apparel")
add("Candi Prambanan")
add("Sepuh WBD")
}
}
override fun onReceive(context: Context?, intent: Intent?) {
val selectedTitle = titles.random()
_selectedTitle = selectedTitle
}
}
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment