Skip to content
Snippets Groups Projects
Commit b1f57c45 authored by Rayhan Hanif Maulana Pradana's avatar Rayhan Hanif Maulana Pradana
Browse files

Merge branch 'randomizer' into 'dev'

Randomizer

See merge request !7
parents 00275828 a3c9cee4
3 merge requests!13Release,!11proper save for gmail,!7Randomizer
......@@ -25,6 +25,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"
......@@ -41,6 +50,8 @@
android:exported="true">
</activity>
</application>
</manifest>
\ No newline at end of file
......@@ -2,23 +2,38 @@ package com.example.bondoyap
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.content.SharedPreferences
import android.os.Bundle
import androidx.activity.viewModels
import com.google.android.material.bottomnavigation.BottomNavigationView
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContentProviderCompat.requireContext
import androidx.fragment.app.viewModels
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import androidx.navigation.findNavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.setupActionBarWithNavController
import androidx.navigation.ui.setupWithNavController
import com.example.bondoyap.service.api.Constants.SHARED_PREFS_NAME
import com.example.bondoyap.databinding.ActivityMainBinding
import com.example.bondoyap.service.api.Constants
import com.example.bondoyap.service.jwt.JwtService
import com.example.bondoyap.ui.login.LoginActivity
import com.example.bondoyap.ui.transactions.TransactionsApplication
import com.example.bondoyap.ui.transactions.TransactionsBroadcastReceiver
import com.example.bondoyap.ui.transactions.TransactionsViewModel
import com.example.bondoyap.ui.transactions.TransactionsViewModelFactory
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private lateinit var sharedPreferences: SharedPreferences
private lateinit var transactionsBroadcastReceiver: TransactionsBroadcastReceiver
private val transactionsViewModel: TransactionsViewModel by viewModels {
TransactionsViewModelFactory((applicationContext as TransactionsApplication).repository)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
......@@ -48,6 +63,10 @@ class MainActivity : AppCompatActivity() {
setupActionBarWithNavController(navController, appBarConfiguration)
navView.setupWithNavController(navController)
transactionsBroadcastReceiver = TransactionsBroadcastReceiver(transactionsViewModel)
val filter = IntentFilter(Constants.ACTION_RANDOMIZE_TRANSACTIONS)
LocalBroadcastManager.getInstance(this).registerReceiver(transactionsBroadcastReceiver, filter)
}
override fun onSupportNavigateUp(): Boolean {
......@@ -57,4 +76,9 @@ class MainActivity : AppCompatActivity() {
private fun isLoggedIn(): Boolean {
return sharedPreferences.getBoolean("isLoggedIn", false)
}
override fun onDestroy() {
super.onDestroy()
LocalBroadcastManager.getInstance(this).unregisterReceiver(transactionsBroadcastReceiver)
}
}
\ No newline at end of file
......@@ -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
......@@ -2,13 +2,16 @@ 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
import android.widget.Toast
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import androidx.localbroadcastmanager.content.LocalBroadcastManager
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() {
......@@ -25,6 +28,7 @@ class SettingsFragment : Fragment() {
_binding = FragmentSettingsBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
......@@ -60,15 +64,20 @@ 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!")
LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent)
Log.d("BroadcastDebug", "Sending broadcast from SettingsFragment")
}
saveButton.setOnClickListener{
saveButton.setOnClickListener {
Toast.makeText(appContext, "Menyimpan transaksi...", Toast.LENGTH_SHORT).show()
//todo
}
sendButton.setOnClickListener{
sendButton.setOnClickListener {
Toast.makeText(appContext, "Mengirimkan transaksi ...", Toast.LENGTH_SHORT).show()
//todo
}
......
package com.example.bondoyap.ui.transactions
import android.R
import android.content.Context
import android.content.IntentFilter
import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ArrayAdapter
import android.widget.Toast
import androidx.annotation.RequiresApi
import androidx.core.app.ActivityCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.localbroadcastmanager.content.LocalBroadcastManager
import com.example.bondoyap.databinding.FragmentAddTransactionsBinding
import com.example.bondoyap.service.api.Constants.ACTION_RANDOMIZE_TRANSACTIONS
import com.example.bondoyap.ui.transactions.data.Transactions
import com.google.android.gms.location.FusedLocationProviderClient
import com.google.android.gms.location.LocationServices
......@@ -85,7 +91,7 @@ class AddTransactionsFragment : Fragment() {
0.0
}
val location = fusedLocationProviderClient.lastLocation
val location = fusedLocationProviderClient.lastLocation
location.addOnSuccessListener {
if(it != null) {
latitude = it.latitude.toString()
......
package com.example.bondoyap.ui.transactions
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.util.Log
import android.widget.Toast
import androidx.core.app.ActivityCompat
import com.example.bondoyap.ui.transactions.data.Transactions
import com.google.android.gms.location.FusedLocationProviderClient
import com.google.android.gms.location.LocationServices
import java.text.SimpleDateFormat
import java.util.Date
import java.util.Locale
import kotlin.random.Random
class TransactionsBroadcastReceiver(private val transactionsViewModel: TransactionsViewModel) : BroadcastReceiver() {
private lateinit var fusedLocationProviderClient: FusedLocationProviderClient
private lateinit var latitude: String
private lateinit var longitude: String
override fun onReceive(context: Context?, intent: Intent?) {
Log.d("BroadcastDebug", "Broadcast received in AddTransactionsFragment")
context ?: return
val randomJudul = "Random Judul ${Random.nextInt(1000)}"
val randomNominal = Random.nextDouble(1000000000000000.0)
val randomIsPemasukan = Random.nextBoolean()
val dateFormat = SimpleDateFormat("dd/MM/yyyy", Locale.getDefault())
val currentDate = dateFormat.format(Date())
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(context)
val location = fusedLocationProviderClient.lastLocation
location.addOnSuccessListener {
if(it != null) {
latitude = it.latitude.toString()
longitude = it.longitude.toString()
val transaction: Transactions = Transactions(
judul = randomJudul,
nominal = randomNominal,
isPemasukan = randomIsPemasukan,
tanggal = currentDate,
longitude = longitude,
latitude = latitude
)
transactionsViewModel.upsert(transaction)
}
}
if(
ActivityCompat.checkSelfPermission(context, android.Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(context, android.Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED
) {
val transaction: Transactions = Transactions(
judul = randomJudul,
nominal = randomNominal,
isPemasukan = randomIsPemasukan,
tanggal = currentDate,
longitude = "",
latitude = ""
)
transactionsViewModel.upsert(transaction)
Toast.makeText(context.applicationContext,
"Izinkan location permission untuk membuat transaksi random dengan lokasi",
Toast.LENGTH_SHORT).show()
}
Toast.makeText(context.applicationContext, "Transaksi random telah dibuat", Toast.LENGTH_SHORT).show()
}
}
\ No newline at end of file
......@@ -2,6 +2,7 @@ package com.example.bondoyap.ui.transactions
import android.content.pm.PackageManager
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
......@@ -15,12 +16,11 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.example.bondoyap.R
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 transactionsViewModel: TransactionsViewModel by viewModels {
......@@ -52,6 +52,7 @@ class TransactionsFragment: Fragment() {
return binding.root
}
override fun onDestroyView() {
super.onDestroyView()
_binding = null
......
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