diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f1ec3ca3962e81c27a5cfc2d2f70cc2cf38411e2..0b78d2b7b1cddcddc0f58b869aa4375484304144 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -22,6 +22,15 @@ android:permission="android.permission.INTERNET"> </service> + <receiver + android:name=".ui.transactions.TransactionsBroadcastReceiver" + android:enabled="true" + android:exported="false"> + <intent-filter> + <action android:name="com.BondoYap.transactions.randomize" /> + </intent-filter> + </receiver> + <activity android:name=".ui.login.LoginActivity" android:screenOrientation="portrait" @@ -38,6 +47,8 @@ android:exported="true"> </activity> + + </application> </manifest> \ No newline at end of file diff --git a/app/src/main/java/com/example/bondoyap/service/api/Constants.kt b/app/src/main/java/com/example/bondoyap/service/api/Constants.kt index 76fb345217e505ad47427a35808c9e2a256b86ef..897daedea631dae9a33ff6c0eca3671394eb39df 100644 --- a/app/src/main/java/com/example/bondoyap/service/api/Constants.kt +++ b/app/src/main/java/com/example/bondoyap/service/api/Constants.kt @@ -3,4 +3,5 @@ package com.example.bondoyap.service.api object Constants { const val BASE_URL: String = "https://pbd-backend-2024.vercel.app/api/" const val SHARED_PREFS_NAME = "BondoYap" + const val ACTION_RANDOMIZE_TRANSACTIONS = "com.BondoYap.transactions.randomize" } \ No newline at end of file diff --git a/app/src/main/java/com/example/bondoyap/ui/settings/SettingsFragment.kt b/app/src/main/java/com/example/bondoyap/ui/settings/SettingsFragment.kt index 8018684cc1dabee268479d5c16e1e2029ee1dba6..6835e7ef6031f01445a21a2f40fb95665ac99041 100644 --- a/app/src/main/java/com/example/bondoyap/ui/settings/SettingsFragment.kt +++ b/app/src/main/java/com/example/bondoyap/ui/settings/SettingsFragment.kt @@ -2,6 +2,7 @@ package com.example.bondoyap.ui.settings import android.content.Intent import android.os.Bundle +import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -9,6 +10,7 @@ import android.widget.Toast import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.example.bondoyap.databinding.FragmentSettingsBinding +import com.example.bondoyap.service.api.Constants.ACTION_RANDOMIZE_TRANSACTIONS import com.example.bondoyap.ui.login.LoginActivity class SettingsFragment : Fragment() { @@ -60,7 +62,12 @@ class SettingsFragment : Fragment() { randomButton.setOnClickListener { Toast.makeText(appContext, "Membuat transaksi random ...", Toast.LENGTH_SHORT).show() - //todo + + val intent = Intent(ACTION_RANDOMIZE_TRANSACTIONS) + intent.putExtra("message", "Randomize from setting!") + requireContext().sendBroadcast(intent) + + Log.d("BroadcastDebug", "Sending broadcast from SettingsFragment") } saveButton.setOnClickListener{ diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsBroadcastReceiver.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsBroadcastReceiver.kt new file mode 100644 index 0000000000000000000000000000000000000000..f2d37566bed4a1ac0d4d4e2ef9f0e6099a775010 --- /dev/null +++ b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsBroadcastReceiver.kt @@ -0,0 +1,19 @@ +package com.example.bondoyap.ui.transactions + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.util.Log +import android.widget.Toast + +class TransactionsBroadcastReceiver : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + Log.d("BroadcastDebug", "onReceive") + + val message = intent?.getStringExtra("message") + if (message != null) { + Log.d("BroadcastDebug", message) + } + Toast.makeText(context?.applicationContext, "Received message: $message", Toast.LENGTH_SHORT).show() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsFragment.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsFragment.kt index b8cbc5f6ddde72493ea3dc5d9e81c53015e6557e..29a85c939d979b4c8706088f6c0021956fb5b0e3 100644 --- a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsFragment.kt +++ b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsFragment.kt @@ -1,6 +1,8 @@ package com.example.bondoyap.ui.transactions +import android.content.IntentFilter import android.os.Bundle +import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -8,15 +10,26 @@ import android.widget.TextView import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.example.bondoyap.databinding.FragmentTransactionsBinding +import com.example.bondoyap.service.api.Constants.ACTION_RANDOMIZE_TRANSACTIONS class TransactionsFragment : Fragment() { private var _binding: FragmentTransactionsBinding? = null - // This property is only valid between onCreateView and - // onDestroyView. private val binding get() = _binding!! + private val receiver = TransactionsBroadcastReceiver() + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + registerReceiver() + } + + override fun onDestroy() { + unregisterReceiver() + super.onDestroy() + } + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -32,11 +45,27 @@ class TransactionsFragment : Fragment() { transactionsViewModel.text.observe(viewLifecycleOwner) { textView.text = it } + + return root } + override fun onDestroyView() { super.onDestroyView() _binding = null } + + private fun registerReceiver() { + val filter = IntentFilter(ACTION_RANDOMIZE_TRANSACTIONS) + requireContext().registerReceiver(receiver, filter) + } + + private fun unregisterReceiver() { + try { + requireContext().unregisterReceiver(receiver) + } catch (e: IllegalArgumentException) { + Log.d("BroadcastDebug", "Error unregister") + } + } } \ No newline at end of file