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