From a0651cd231a89facb8dc939fc3eb5bb8bbd912c6 Mon Sep 17 00:00:00 2001 From: bag <bagasaryo03@gmail.com> Date: Fri, 5 Apr 2024 14:14:47 +0700 Subject: [PATCH] fix:bug --- .../java/com/example/pbd_jwr/LoginActivity.kt | 4 +- .../java/com/example/pbd_jwr/MainActivity.kt | 48 +------------------ .../pbd_jwr/ui/dashboard/DashboardFragment.kt | 2 + .../example/pbd_jwr/ui/scan/ScanFragment.kt | 15 ------ .../pbd_jwr/ui/settings/SettingsFragment.kt | 12 ++--- .../ui/transaction/TransactionAddFragment.kt | 10 +--- .../transaction/TransactionDetailFragment.kt | 8 ++-- .../ui/transaction/TransactionFragment.kt | 15 +++--- .../ui/transaction/TransactionViewModel.kt | 2 - .../pbd_jwr/ui/twibbon/TwibbonFragment.kt | 8 ---- 10 files changed, 26 insertions(+), 98 deletions(-) diff --git a/app/src/main/java/com/example/pbd_jwr/LoginActivity.kt b/app/src/main/java/com/example/pbd_jwr/LoginActivity.kt index 663113e..efb75f2 100644 --- a/app/src/main/java/com/example/pbd_jwr/LoginActivity.kt +++ b/app/src/main/java/com/example/pbd_jwr/LoginActivity.kt @@ -33,7 +33,7 @@ class LoginActivity : AppCompatActivity() { private lateinit var password:String private var client = OkHttpClient() private val postURL = "https://pbd-backend-2024.vercel.app/api/auth/login" - val mediaType = "application/json; charset=utf-8".toMediaType() + private val mediaType = "application/json; charset=utf-8".toMediaType() private lateinit var sharedPreferences: SharedPreferences private lateinit var sharedPreferencesEditor :Editor @@ -130,7 +130,7 @@ class LoginActivity : AppCompatActivity() { val requestBody :RequestBody = jsonObject.toString().toRequestBody(mediaType) //Make Request Using Okhttp - val request :Request = Request.Builder().url(postURL).post(requestBody).build(); + val request :Request = Request.Builder().url(postURL).post(requestBody).build() val response = client.newCall(request).enqueue(object : Callback{ override fun onFailure(call: Call, e: IOException) { runOnUiThread { 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 41c08c2..135af46 100644 --- a/app/src/main/java/com/example/pbd_jwr/MainActivity.kt +++ b/app/src/main/java/com/example/pbd_jwr/MainActivity.kt @@ -9,13 +9,8 @@ import android.os.Bundle 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 import androidx.appcompat.app.AppCompatActivity @@ -28,18 +23,11 @@ import androidx.navigation.ui.AppBarConfiguration import androidx.navigation.ui.setupActionBarWithNavController import androidx.navigation.ui.setupWithNavController import com.example.pbd_jwr.backgroundService.JWTValidationService -import com.example.pbd_jwr.data.entity.Transaction -import com.example.pbd_jwr.data.model.Category import com.example.pbd_jwr.databinding.ActivityMainBinding import com.example.pbd_jwr.encryptedSharedPref.EncryptedSharedPref import com.example.pbd_jwr.network.NetworkCallbackImplementation import com.example.pbd_jwr.ui.transaction.TransactionViewModel 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() { @@ -61,7 +49,7 @@ class MainActivity : AppCompatActivity() { startService(serviceIntent) // Inisialisasi receiver - val receiver = object : BroadcastReceiver() { + 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) @@ -233,40 +221,6 @@ class MainActivity : AppCompatActivity() { connectivityManager.unregisterNetworkCallback(networkCallback) } - private val startScanActivityForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> - if (result.resultCode == Activity.RESULT_OK) { - - sharedPreferences = EncryptedSharedPref.create(applicationContext, "login") - val currentUserEmail = sharedPreferences.getString("email", "") ?: "" - - val data = result.data - val transactionDummyData = data?.getStringExtra("transactionDummyData") - - transactionDummyData?.let { - - val jsonObject = JSONObject(transactionDummyData) - val itemsArray = jsonObject.getJSONObject("items").getJSONArray("items") - - for (i in 0 until itemsArray.length()) { - val itemObject = itemsArray.getJSONObject(i) - val name = itemObject.getString("name") - val category = Category.EXPENSE - val price = itemObject.getDouble("price") - val qty = itemObject.getInt("qty") - val amount = (qty * price * 1000).roundToInt() / 1000.0 - val latitude = 6.8915 - val longitude = 107.6107 - val location = "Latitude: $latitude, Longitude: $longitude" - val date = Date().time - - mTransactionViewModel.addTransaction(Transaction(email = currentUserEmail, title = name, category = category, amount = amount, latitude = latitude, longitude = longitude, date = date)) - } - - - } - } - } - companion object { private const val LOCATION_PERMISSION_REQUEST_CODE = 1001 } diff --git a/app/src/main/java/com/example/pbd_jwr/ui/dashboard/DashboardFragment.kt b/app/src/main/java/com/example/pbd_jwr/ui/dashboard/DashboardFragment.kt index 8660fa3..a427e54 100644 --- a/app/src/main/java/com/example/pbd_jwr/ui/dashboard/DashboardFragment.kt +++ b/app/src/main/java/com/example/pbd_jwr/ui/dashboard/DashboardFragment.kt @@ -10,6 +10,7 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import com.example.pbd_jwr.R import com.example.pbd_jwr.data.entity.Transaction +import com.example.pbd_jwr.encryptedSharedPref.EncryptedSharedPref import com.example.pbd_jwr.ui.transaction.TransactionViewModel import com.github.mikephil.charting.animation.Easing @@ -35,6 +36,7 @@ class DashboardFragment : Fragment() { pieChart = view.findViewById(R.id.pieChart) viewModel = ViewModelProvider(this)[TransactionViewModel::class.java] + encryptedSharedPref = EncryptedSharedPref.create(requireContext(), "login") return view } diff --git a/app/src/main/java/com/example/pbd_jwr/ui/scan/ScanFragment.kt b/app/src/main/java/com/example/pbd_jwr/ui/scan/ScanFragment.kt index 1e488df..b970cf8 100644 --- a/app/src/main/java/com/example/pbd_jwr/ui/scan/ScanFragment.kt +++ b/app/src/main/java/com/example/pbd_jwr/ui/scan/ScanFragment.kt @@ -11,7 +11,6 @@ import android.content.SharedPreferences import android.content.pm.PackageManager import android.graphics.Bitmap import android.graphics.BitmapFactory -import android.hardware.SensorManager import android.net.ConnectivityManager import android.net.NetworkCapabilities import android.net.Uri @@ -23,21 +22,16 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Button -import android.widget.ImageView -import android.widget.ListView import android.widget.Toast import androidx.activity.result.contract.ActivityResultContracts import androidx.core.content.ContextCompat -import androidx.core.content.ContextCompat.getSystemService import androidx.core.content.FileProvider -import androidx.core.content.getSystemService import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import com.example.pbd_jwr.R import com.example.pbd_jwr.data.entity.Transaction import com.example.pbd_jwr.data.model.Category -//import com.example.pbd_jwr.ScanActivity import com.example.pbd_jwr.databinding.FragmentScanBinding import com.example.pbd_jwr.encryptedSharedPref.EncryptedSharedPref import com.example.pbd_jwr.ui.transaction.TransactionDummyAdapter @@ -67,9 +61,6 @@ class ScanFragment : Fragment() { companion object { const val REQUEST_CAMERA_PERMISSION = 101 - const val REQUEST_STORAGE_PERMISSION = 102 - const val REQUEST_IMAGE_CAPTURE = 1 - const val PICK_IMAGE = 3 } data class TransactionDummy( @@ -180,12 +171,6 @@ class ScanFragment : Fragment() { } } - private fun openGallery() { - val intent = Intent(Intent.ACTION_PICK) - intent.type = "image/*" - startActivityForResult(intent, PICK_IMAGE) - } - private fun uploadImage(imageUri: Uri) { val token = sharedPreferences.getString("token", null) if (token.isNullOrEmpty()) { 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 a6819f8..8bbaf0b 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 @@ -115,10 +115,10 @@ class SettingsFragment : Fragment() { // Membuat header val header = sheet.createRow(0) - header.createCell(0).setCellValue("Tanggal") - header.createCell(1).setCellValue("Kategori Transaksi") - header.createCell(2).setCellValue("Nominal Transaksi") - header.createCell(3).setCellValue("Nama Transaksi") + header.createCell(0).setCellValue("Date") + header.createCell(1).setCellValue("Category") + header.createCell(2).setCellValue("Amount") + header.createCell(3).setCellValue("Title") header.createCell(4).setCellValue("Latitude") header.createCell(5).setCellValue("Longitude") @@ -143,10 +143,10 @@ class SettingsFragment : Fragment() { } } - Toast.makeText(context, "Transaksi berhasil diekspor ke Excel", Toast.LENGTH_LONG).show() + Toast.makeText(context, "Transactions exported to Spreadsheet", Toast.LENGTH_LONG).show() } catch (e: Exception) { e.printStackTrace() - Toast.makeText(context, "Gagal mengekspor transaksi: ${e.message}", Toast.LENGTH_LONG).show() + Toast.makeText(context, "Failed exporting transactions: ${e.message}", Toast.LENGTH_LONG).show() } finally { workbook.close() } 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 cb5b1e2..298395c 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 @@ -3,18 +3,11 @@ package com.example.pbd_jwr.ui.transaction import android.Manifest import android.content.BroadcastReceiver import android.content.Context -import android.content.Intent -import android.content.IntentFilter import android.content.SharedPreferences -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 @@ -31,7 +24,6 @@ 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.example.pbd_jwr.R import java.util.Date class TransactionAddFragment : Fragment() { @@ -53,7 +45,7 @@ class TransactionAddFragment : Fragment() { container: ViewGroup?, savedInstanceState: Bundle? ): View { - mTransactionViewModel = ViewModelProvider(this).get(TransactionViewModel::class.java) + mTransactionViewModel = ViewModelProvider(this)[TransactionViewModel::class.java] _binding = FragmentTransactionAddBinding.inflate(inflater, container, false) val root: View = binding.root diff --git a/app/src/main/java/com/example/pbd_jwr/ui/transaction/TransactionDetailFragment.kt b/app/src/main/java/com/example/pbd_jwr/ui/transaction/TransactionDetailFragment.kt index db4489f..03d3555 100644 --- a/app/src/main/java/com/example/pbd_jwr/ui/transaction/TransactionDetailFragment.kt +++ b/app/src/main/java/com/example/pbd_jwr/ui/transaction/TransactionDetailFragment.kt @@ -1,5 +1,6 @@ package com.example.pbd_jwr.ui.transaction +import android.annotation.SuppressLint import android.os.Bundle import android.text.Html import android.view.LayoutInflater @@ -39,7 +40,7 @@ class TransactionDetailFragment : Fragment(), OnMapReadyCallback { container: ViewGroup?, savedInstanceState: Bundle? ): View { - mTransactionViewModel = ViewModelProvider(this).get(TransactionViewModel::class.java) + mTransactionViewModel = ViewModelProvider(this)[TransactionViewModel::class.java] _binding = FragmentTransactionDetailBinding.inflate(inflater, container, false) val root: View = binding.root @@ -75,11 +76,12 @@ class TransactionDetailFragment : Fragment(), OnMapReadyCallback { _binding = null } + @SuppressLint("SetTextI18n") private fun displayTransactionDetails(transaction: Transaction) { binding.textViewTitle.text = transaction.title binding.textViewCategory.text = transaction.category.toString() binding.textViewAmount.text = transaction.amount.toString() - binding.textViewLocation.text = "${transaction.latitude.toString()}, ${transaction.longitude.toString()}" + binding.textViewLocation.text = "${transaction.latitude}, ${transaction.longitude}" binding.textViewDate.text = formatDate(transaction.date) binding.textViewCategoryLabel.text = "Category: " @@ -100,7 +102,7 @@ class TransactionDetailFragment : Fragment(), OnMapReadyCallback { .setTitle("Delete Transaction") .setMessage("Are you sure you want to delete this transaction?") .setPositiveButton(Html.fromHtml("<font color='#5F646D'>Yes</font>")) { _, _ -> - transaction?.let { deleteTransaction(it) } + deleteTransaction(transaction) } .setNegativeButton(Html.fromHtml("<font color='#5F646D'>No</font>")) { dialog, _ -> dialog.dismiss() diff --git a/app/src/main/java/com/example/pbd_jwr/ui/transaction/TransactionFragment.kt b/app/src/main/java/com/example/pbd_jwr/ui/transaction/TransactionFragment.kt index 2fe780e..fb7e7d2 100644 --- a/app/src/main/java/com/example/pbd_jwr/ui/transaction/TransactionFragment.kt +++ b/app/src/main/java/com/example/pbd_jwr/ui/transaction/TransactionFragment.kt @@ -7,7 +7,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment -import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.LinearLayoutManager @@ -39,11 +38,14 @@ class TransactionFragment : Fragment() { encryptedSharedPref = EncryptedSharedPref.create(requireContext(), "login") val currentUserEmail = encryptedSharedPref.getString("email", "") ?: "" - mTransactionViewModel.getAllTransactions().observe(viewLifecycleOwner, Observer { transactions -> + mTransactionViewModel.getAllTransactions().observe(viewLifecycleOwner) { transactions -> transactions.forEach { transaction -> - Log.d("Transaction", "Title: ${transaction.title}, Category: ${transaction.category}, Amount: ${transaction.amount}") + Log.d( + "Transaction", + "Title: ${transaction.title}, Category: ${transaction.category}, Amount: ${transaction.amount}" + ) } - }) + } transactionAdapter = TransactionAdapter() @@ -56,9 +58,10 @@ class TransactionFragment : Fragment() { findNavController().navigate(R.id.action_transactionFragment_to_transactionAddFragment) } - mTransactionViewModel.getTransactionsByEmail(currentUserEmail).observe(viewLifecycleOwner, Observer { transactions -> + mTransactionViewModel.getTransactionsByEmail(currentUserEmail).observe(viewLifecycleOwner + ) { transactions -> transactionAdapter.submitList(transactions) - }) + } return root } diff --git a/app/src/main/java/com/example/pbd_jwr/ui/transaction/TransactionViewModel.kt b/app/src/main/java/com/example/pbd_jwr/ui/transaction/TransactionViewModel.kt index 083fc41..b57573f 100644 --- a/app/src/main/java/com/example/pbd_jwr/ui/transaction/TransactionViewModel.kt +++ b/app/src/main/java/com/example/pbd_jwr/ui/transaction/TransactionViewModel.kt @@ -4,9 +4,7 @@ import android.app.Application import androidx.lifecycle.AndroidViewModel import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope -import com.example.pbd_jwr.data.dao.TransactionDao import com.example.pbd_jwr.data.database.AppDatabase import com.example.pbd_jwr.data.entity.Transaction import com.example.pbd_jwr.data.repository.TransactionRepository diff --git a/app/src/main/java/com/example/pbd_jwr/ui/twibbon/TwibbonFragment.kt b/app/src/main/java/com/example/pbd_jwr/ui/twibbon/TwibbonFragment.kt index 54bf0ae..c0ca9bb 100644 --- a/app/src/main/java/com/example/pbd_jwr/ui/twibbon/TwibbonFragment.kt +++ b/app/src/main/java/com/example/pbd_jwr/ui/twibbon/TwibbonFragment.kt @@ -5,14 +5,10 @@ import android.content.pm.PackageManager import android.graphics.Bitmap import android.graphics.BitmapFactory import android.graphics.Canvas -import android.graphics.ImageFormat import android.graphics.Matrix import android.graphics.Rect import android.graphics.RectF -import android.graphics.YuvImage -import android.graphics.drawable.BitmapDrawable import android.graphics.drawable.VectorDrawable -import android.net.Uri import android.os.Bundle import android.util.Log import android.view.LayoutInflater @@ -29,10 +25,6 @@ import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import com.example.pbd_jwr.R import com.example.pbd_jwr.databinding.FragmentTwibbonBinding -import java.io.ByteArrayOutputStream -import java.io.File -import java.text.SimpleDateFormat -import java.util.Locale import java.util.concurrent.ExecutorService import java.util.concurrent.Executors -- GitLab