Skip to content

Commit

Permalink
fix(health-sdk): Addressed change requests
Browse files Browse the repository at this point in the history
IPC-251
  • Loading branch information
danicretu committed May 17, 2024
1 parent c38588f commit 026307f
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,9 @@ import android.content.ActivityNotFoundException
import android.content.Intent
import android.os.Build
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.constraintlayout.widget.ConstraintLayout
import androidx.constraintlayout.widget.ConstraintSet
import androidx.core.content.FileProvider
Expand Down Expand Up @@ -43,31 +41,30 @@ import kotlinx.coroutines.launch
import net.gini.android.core.api.models.Document
import net.gini.android.health.sdk.GiniHealth
import net.gini.android.health.sdk.R
import net.gini.android.health.sdk.bankselection.BankSelectionBottomSheet
import net.gini.android.health.sdk.databinding.GhsFragmentReviewBinding
import net.gini.android.health.sdk.paymentcomponent.PaymentComponent
import net.gini.android.health.sdk.paymentprovider.PaymentProviderApp
import net.gini.android.health.sdk.preferences.UserPreferences
import net.gini.android.health.sdk.review.installApp.InstallAppBottomSheet
import net.gini.android.health.sdk.review.installApp.InstallAppForwardListener
import net.gini.android.health.sdk.review.model.PaymentDetails
import net.gini.android.health.sdk.review.model.ResultWrapper
import net.gini.android.health.sdk.review.openWith.OpenWithBottomSheet
import net.gini.android.health.sdk.review.openWith.OpenWithForwardListener
import net.gini.android.health.sdk.review.openWith.OpenWithPreferences
import net.gini.android.health.sdk.review.pager.DocumentPageAdapter
import net.gini.android.health.sdk.util.amountWatcher
import net.gini.android.health.sdk.util.autoCleared
import net.gini.android.health.sdk.util.clearErrorMessage
import net.gini.android.health.sdk.util.extensions.getFontScale
import net.gini.android.health.sdk.util.getLayoutInflaterWithGiniHealthTheme
import net.gini.android.health.sdk.util.hideErrorMessage
import net.gini.android.health.sdk.util.hideKeyboard
import net.gini.android.health.sdk.util.setBackgroundTint
import net.gini.android.health.sdk.util.setErrorMessage
import net.gini.android.health.sdk.util.setTextIfDifferent
import net.gini.android.health.sdk.util.showErrorMessage
import net.gini.android.health.sdk.paymentcomponent.PaymentComponent
import net.gini.android.health.sdk.bankselection.BankSelectionBottomSheet
import net.gini.android.health.sdk.review.installApp.InstallAppBottomSheet
import net.gini.android.health.sdk.review.installApp.InstallAppForwardListener
import net.gini.android.health.sdk.review.openWith.OpenWithBottomSheet
import net.gini.android.health.sdk.review.openWith.OpenWithForwardListener
import net.gini.android.health.sdk.review.openWith.OpenWithPreferences
import net.gini.android.health.sdk.util.HealthSDKFileProvider
import net.gini.android.health.sdk.util.extensions.getFontScale
import net.gini.android.health.sdk.util.getLayoutInflaterWithGiniHealthTheme
import net.gini.android.health.sdk.util.wrappedWithGiniHealthTheme
import java.io.File

Expand Down Expand Up @@ -363,7 +360,9 @@ class ReviewFragment private constructor(
}
}
// TODO: use more informative error messages (include error details)
is GiniHealth.PaymentState.Error -> handleError(getString(R.string.ghs_error_open_bank)) { viewModel.onPayment() }
is GiniHealth.PaymentState.Error -> {
handleError(getString(R.string.ghs_generic_error_message)) { viewModel.onPaymentButtonTapped(requireContext().externalCacheDir) }
}
else -> { // Loading is already handled
}
}
Expand Down Expand Up @@ -596,7 +595,6 @@ class ReviewFragment private constructor(
binding.loading.isVisible = false
startSharePdfIntent(paymentNextStep.file)
}
is ReviewViewModel.PaymentNextStep.OpenSharePdfError -> Toast.makeText(requireContext(), "Share PDF failed with error: ${paymentNextStep.error}", Toast.LENGTH_LONG).show()
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
package net.gini.android.health.sdk.review

import android.content.Context
import android.util.Log
import androidx.annotation.VisibleForTesting
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.async
import kotlinx.coroutines.channels.BufferOverflow
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableSharedFlow
Expand Down Expand Up @@ -298,19 +296,16 @@ internal class ReviewViewModel(val giniHealth: GiniHealth, val configuration: Re
val paymentRequest = try {
getPaymentRequest()
} catch (throwable: Throwable) {
GiniHealth.PaymentState.Error(throwable)
_paymentNextStep.tryEmit(PaymentNextStep.OpenSharePdfError(throwable.message ?: "Error getting payment request"))
giniHealth.setOpenBankState(GiniHealth.PaymentState.Error(throwable))
return@withContext
}
val byteArrayResource = async { giniHealth.giniHealthAPI.documentManager.getPaymentRequestDocument(paymentRequest.id) }.await()
when (byteArrayResource) {
is Resource.Cancelled -> {
GiniHealth.PaymentState.Error(Exception("Cancelled"))
_paymentNextStep.tryEmit(PaymentNextStep.OpenSharePdfError("Cancelled"))
giniHealth.setOpenBankState(GiniHealth.PaymentState.Error(Exception("Cancelled")))
}
is Resource.Error -> {
GiniHealth.PaymentState.Error(Exception(byteArrayResource.exception))
_paymentNextStep.tryEmit(PaymentNextStep.OpenSharePdfError(byteArrayResource.exception?.message ?: "Error getting payment request file"))
giniHealth.setOpenBankState(GiniHealth.PaymentState.Error(Throwable(byteArrayResource.exception)))
}
is Resource.Success -> {
giniHealth.setOpenBankState(GiniHealth.PaymentState.Success(paymentRequest))
Expand All @@ -334,7 +329,6 @@ internal class ReviewViewModel(val giniHealth: GiniHealth, val configuration: Re
object RedirectToBank: PaymentNextStep()
object ShowOpenWithSheet: PaymentNextStep()
object ShowInstallApp: PaymentNextStep()
data class OpenSharePdfError(val error: String): PaymentNextStep()
data class OpenSharePdf(val file: File): PaymentNextStep()
data class SetLoadingVisibility(val isVisible: Boolean): PaymentNextStep()
}
Expand Down
2 changes: 2 additions & 0 deletions health-sdk/sdk/src/main/res/values-en/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -70,4 +70,6 @@ Gini is ISO 27001 certified for maximum data security and operates its own serve
<string name="ghs_open_with_info">Tip: if you don\'t see the app scroll until you find the %s app. If you haven\'t installed the %s app yet,</string>
<string name="ghs_open_with_download_app">download it from the store</string>
<string name="ghs_sharing_file">Sharing 1 file</string>

<string name="ghs_generic_error_message">Oops, something went wrong. Please try again.</string>
</resources>
2 changes: 2 additions & 0 deletions health-sdk/sdk/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -71,4 +71,6 @@
<string name="ghs_open_with_info">Tipp: Scrollen Sie, bis Sie die %s-App finden. Wenn Sie die DKB-App noch nicht installiert haben,</string>
<string name="ghs_open_with_download_app">laden Sie sie im Store herunter</string>
<string name="ghs_open_with_app">App</string>

<string name="ghs_generic_error_message">Oh da ist was schief gelaufen. Probiere es noch einmal.</string>
</resources>

0 comments on commit 026307f

Please sign in to comment.