diff --git a/app/src/main/java/com/example/abe/ui/scanner/ScannerFragment.kt b/app/src/main/java/com/example/abe/ui/scanner/ScannerFragment.kt index 2378b8d5ec9b29d7af133755772842f40c3b3596..ad99bb79fbc88fa37d4d9d039c91edc8a3ad817c 100644 --- a/app/src/main/java/com/example/abe/ui/scanner/ScannerFragment.kt +++ b/app/src/main/java/com/example/abe/ui/scanner/ScannerFragment.kt @@ -72,6 +72,8 @@ class ScannerFragment : Fragment(), UploadResultCallback { private var isProcessingPhoto = false + private lateinit var waitingUploadDialog: Dialog + private val viewModel: ScannerViewModel by viewModels { ScannerViewModelFactory((activity?.application as ABEApplication).repository) } @@ -160,6 +162,11 @@ class ScannerFragment : Fragment(), UploadResultCallback { openGallery() } + waitingUploadDialog = Dialog(requireContext()).apply { + setCancelable(false) + setContentView(R.layout.dialog_waiting_upload) + } + return binding.root } @@ -199,6 +206,8 @@ class ScannerFragment : Fragment(), UploadResultCallback { } private fun attemptUpload(imageFile: File) { + waitingUploadDialog.show() + lifecycleScope.launch { val retrofit = Retrofit() val token = (activity as MainActivity).preferenceDataStoreHelper.getFirstPreference( @@ -385,6 +394,8 @@ class ScannerFragment : Fragment(), UploadResultCallback { uploadResponse?.items?.items?.forEach { item -> viewModel.insertTransaction(user, item, latitude, longitude, location) } + + waitingUploadDialog.dismiss() val msg = "New transactions added!" Toast.makeText(requireContext(), msg, Toast.LENGTH_SHORT).show() @@ -397,6 +408,7 @@ class ScannerFragment : Fragment(), UploadResultCallback { Toast.makeText(requireContext(), "Upload failed", Toast.LENGTH_SHORT).show() Log.e("ABE-PHO", errorMessage) isProcessingPhoto = false + waitingUploadDialog.dismiss() } private fun openGallery() { diff --git a/app/src/main/res/layout/dialog_waiting_upload.xml b/app/src/main/res/layout/dialog_waiting_upload.xml new file mode 100644 index 0000000000000000000000000000000000000000..b051d66425d1c8ffc57f7feaa9d7b53193e6e19e --- /dev/null +++ b/app/src/main/res/layout/dialog_waiting_upload.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:padding="24dp"> + + <TextView + android:id="@+id/textView" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/waiting_for_receipt_upload" + android:textColor="@android:color/black" + android:textSize="16sp" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <com.google.android.material.progressindicator.CircularProgressIndicator + android:layout_width="64dp" + android:layout_height="62dp" + android:layout_marginTop="24dp" + android:indeterminate="true" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/textView" + app:trackThickness="5dp" + app:indicatorSize="50dp"/> + +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b6150e23f188544f100326d84e7e6f2c006be681..0ef1535ba98f28e2ca5a5d9a6231827120b7b710 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -33,4 +33,5 @@ <!-- TODO: Remove or change this placeholder text --> <string name="hello_blank_fragment">Hello blank fragment</string> <string name="twibbon_overlay">Twibbon overlay</string> + <string name="waiting_for_receipt_upload">Waiting for receipt upload</string> </resources> \ No newline at end of file