diff --git a/app/src/main/java/com/example/pbd_jwr/MainActivity.kt b/app/src/main/java/com/example/pbd_jwr/MainActivity.kt index e497547cac8c4c2920292536c1dddec481018849..a3eb223fcefe2ba8127340ad2d4d6c6925e2d20f 100644 --- a/app/src/main/java/com/example/pbd_jwr/MainActivity.kt +++ b/app/src/main/java/com/example/pbd_jwr/MainActivity.kt @@ -10,6 +10,11 @@ import android.content.pm.PackageManager import android.widget.Toast import android.Manifest import android.app.Activity +import android.content.BroadcastReceiver +import android.content.IntentFilter +import android.util.Log +import android.view.Menu +import android.view.MenuItem import androidx.activity.result.contract.ActivityResultContracts import com.google.android.material.bottomnavigation.BottomNavigationView @@ -17,6 +22,7 @@ import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat import androidx.lifecycle.ViewModelProvider +import androidx.localbroadcastmanager.content.LocalBroadcastManager import androidx.navigation.findNavController import androidx.navigation.ui.AppBarConfiguration import androidx.navigation.ui.setupActionBarWithNavController @@ -32,6 +38,8 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton import org.json.JSONObject import java.util.Date import kotlin.math.roundToInt +import androidx.appcompat.widget.Toolbar +import com.example.pbd_jwr.ui.transaction.TransactionAddFragment class MainActivity : AppCompatActivity() { @@ -44,17 +52,38 @@ class MainActivity : AppCompatActivity() { private lateinit var mTransactionViewModel: TransactionViewModel + private lateinit var receiver: BroadcastReceiver + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val serviceIntent = Intent(this, JWTValidationService::class.java) startService(serviceIntent) + // Inisialisasi receiver + val receiver = object : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + if (intent.action == "com.example.pbd_jwr.RANDOMIZE_TRANSACTION") { + val sharedPreferences = context.getSharedPreferences("randomize_data", Context.MODE_PRIVATE) + val editor = sharedPreferences.edit() + editor.putBoolean("randomize_intent_received", true) + editor.apply() + + } + } + } + + val filter = IntentFilter().apply { + addAction("com.example.pbd_jwr.RANDOMIZE_TRANSACTION") + } + LocalBroadcastManager.getInstance(this).registerReceiver(receiver, filter) + sharedPreferences = EncryptedSharedPref.create(applicationContext,"login") sharedPreferencesEditor = sharedPreferences.edit() binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) + if (!isLocationPermissionGranted()) { requestLocationPermission() } @@ -124,6 +153,7 @@ class MainActivity : AppCompatActivity() { networkCallback = NetworkCallbackImplementation(this) registerNetworkCallback() } + private fun isLocationPermissionGranted(): Boolean { return ContextCompat.checkSelfPermission( this, @@ -180,6 +210,7 @@ class MainActivity : AppCompatActivity() { super.onDestroy() val serviceIntent = Intent(this, JWTValidationService::class.java) stopService(serviceIntent) + LocalBroadcastManager.getInstance(this).unregisterReceiver(receiver) } private fun registerNetworkCallback() { diff --git a/app/src/main/java/com/example/pbd_jwr/ui/settings/SettingsFragment.kt b/app/src/main/java/com/example/pbd_jwr/ui/settings/SettingsFragment.kt index 8904abe133f1d1de17dc762d133eb79cb1e20169..1876e51403444d9a384d02b1deeedf2a42ec5a73 100644 --- a/app/src/main/java/com/example/pbd_jwr/ui/settings/SettingsFragment.kt +++ b/app/src/main/java/com/example/pbd_jwr/ui/settings/SettingsFragment.kt @@ -57,6 +57,7 @@ class SettingsFragment : Fragment() { intent.setAction("com.example.pbd_jwr.RANDOMIZE_TRANSACTION") LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent) + } binding.twibbonButton.setOnClickListener { diff --git a/app/src/main/java/com/example/pbd_jwr/ui/transaction/TransactionAddFragment.kt b/app/src/main/java/com/example/pbd_jwr/ui/transaction/TransactionAddFragment.kt index a07051e37a0fccb9d521bbc3925585609484c9a9..e80e414569dbe8a893e281c681f56dc67f9b4587 100644 --- a/app/src/main/java/com/example/pbd_jwr/ui/transaction/TransactionAddFragment.kt +++ b/app/src/main/java/com/example/pbd_jwr/ui/transaction/TransactionAddFragment.kt @@ -10,7 +10,11 @@ import androidx.localbroadcastmanager.content.LocalBroadcastManager import android.content.pm.PackageManager import android.os.Build import android.os.Bundle +import android.util.Log import android.view.LayoutInflater +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem import android.view.View import android.view.ViewGroup import android.widget.AdapterView @@ -27,9 +31,7 @@ import com.example.pbd_jwr.databinding.FragmentTransactionAddBinding import com.example.pbd_jwr.encryptedSharedPref.EncryptedSharedPref import com.google.android.gms.location.FusedLocationProviderClient import com.google.android.gms.location.LocationServices -import com.google.android.gms.location.LocationRequest -import com.google.android.gms.location.LocationCallback -import com.google.android.gms.location.LocationResult +import com.example.pbd_jwr.R import java.util.Date class TransactionAddFragment : Fragment() { @@ -43,6 +45,8 @@ class TransactionAddFragment : Fragment() { private lateinit var encryptedSharedPref: SharedPreferences + private lateinit var receiver: BroadcastReceiver + @RequiresApi(Build.VERSION_CODES.TIRAMISU) override fun onCreateView( inflater: LayoutInflater, @@ -62,8 +66,19 @@ class TransactionAddFragment : Fragment() { } } - val filter = IntentFilter(TransactionAddFragment.ACTION_RANDOMIZE_TRANSACTION) - LocalBroadcastManager.getInstance(requireContext()).registerReceiver(randomizeTransactionReceiver, filter) + val sharedPreferences = requireContext().getSharedPreferences("randomize_data", Context.MODE_PRIVATE) + val randomIntentReceived = sharedPreferences.getBoolean("randomize_intent_received", false) + if (randomIntentReceived) { + println("masuk random") + // Lakukan randomisasi transaksi di sini + handleRandomizeTransaction() + // Hapus status intent yang sudah diterima agar tidak diproses lagi + val editor = sharedPreferences.edit() + editor.putBoolean("randomize_intent_received", false) + editor.apply() + } +// +// setupListeners() fusedLocationClient = LocationServices.getFusedLocationProviderClient(requireActivity()) showCurrentLocation() @@ -114,26 +129,30 @@ class TransactionAddFragment : Fragment() { } + return root } - private fun handleRandomizeTransaction() { - val editMode = arguments?.getBoolean("editMode", false) ?: false - if (!editMode) { - println("random random") - fillRandomField() - } + + fun handleRandomizeTransaction() { + val randomTitle = generateRandomTitle() + val randomAmount = generateRandomAmount() + + binding.editTextTitle.setText(randomTitle) + binding.editTextAmount.setText(randomAmount.toString()) + + saveRandomData(randomTitle, randomAmount) } - private val randomizeTransactionReceiver = object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - println("Intent diterima oleh broadcast receiver") - if (intent?.action == "com.example.pbd_jwr.RANDOMIZE_TRANSACTION") { - handleRandomizeTransaction() - } - } + private fun saveRandomData(randomTitle: String, randomAmount: Double) { + val sharedPreferences = requireContext().getSharedPreferences("randomize_data", Context.MODE_PRIVATE) + val editor = sharedPreferences.edit() + editor.putString("random_title", randomTitle) + editor.putFloat("random_amount", randomAmount.toFloat()) // Menggunakan putFloat karena SharedPreferences tidak mendukung Double secara langsung + editor.apply() } + private fun showCurrentLocation() { if (ContextCompat.checkSelfPermission( requireContext(), @@ -248,24 +267,21 @@ class TransactionAddFragment : Fragment() { Toast.makeText(requireContext(), message, Toast.LENGTH_SHORT).show() } - private fun fillRandomField() { - val randomTitle = generateRandomTitle() - binding.editTextTitle.setText(randomTitle) + private fun generateRandomAmount(): Double { + return (0..300).random().toDouble() } private fun generateRandomTitle(): String { - return "Random Transaction ${System.currentTimeMillis()}" + return "Random Transaction" } override fun onDestroyView() { super.onDestroyView() - LocalBroadcastManager.getInstance(requireContext()).unregisterReceiver(randomizeTransactionReceiver) } companion object { private const val LOCATION_PERMISSION_REQUEST_CODE = 1001 - const val ACTION_RANDOMIZE_TRANSACTION = "com.example.pbd_jwr.RANDOMIZE_TRANSACTION" } }