Skip to content

Commit

Permalink
refactor(health-sdk): Updates and fixes for Review and PaymentCompone…
Browse files Browse the repository at this point in the history
…ntView
  • Loading branch information
llevente committed Oct 7, 2024
1 parent e5fdabb commit ece6a86
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -45,31 +45,28 @@ 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.preferences.UserPreferences
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.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.getLayoutInflaterWithGiniHealthThemeAndLocale
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.util.wrappedWithGiniHealthThemeAndLocale
import net.gini.android.internal.payment.paymentComponent.PaymentComponent
import net.gini.android.internal.payment.paymentProvider.PaymentProviderApp
import net.gini.android.internal.payment.paymentprovider.PaymentProviderApp
import net.gini.android.internal.payment.review.installApp.InstallAppForwardListener
import net.gini.android.internal.payment.review.openWith.OpenWithForwardListener
import net.gini.android.internal.payment.review.PaymentField
import net.gini.android.internal.payment.review.ValidationMessage
import net.gini.android.internal.payment.utils.autoCleared
import net.gini.android.internal.payment.utils.extensions.getFontScale
import net.gini.android.internal.payment.utils.extensions.getLayoutInflaterWithGiniPaymentThemeAndLocale
import net.gini.android.internal.payment.utils.extensions.wrappedWithGiniPaymentThemeAndLocale
import java.io.File
import java.util.Locale

/**
* Configuration for the [ReviewFragment].
Expand Down Expand Up @@ -138,7 +135,7 @@ class ReviewFragment private constructor(

override fun onGetLayoutInflater(savedInstanceState: Bundle?): LayoutInflater {
val inflater = super.onGetLayoutInflater(savedInstanceState)
return this.getLayoutInflaterWithGiniHealthThemeAndLocale(inflater, viewModel.paymentComponent.giniPaymentLanguage)
return this.getLayoutInflaterWithGiniPaymentThemeAndLocale(inflater, viewModel.paymentComponent.giniPaymentLanguage)
}

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
Expand Down Expand Up @@ -391,7 +388,7 @@ class ReviewFragment private constructor(
}

private fun GhsFragmentReviewBinding.showSnackbar(text: String, onRetry: () -> Unit) {
val context = requireContext().wrappedWithGiniHealthThemeAndLocale(viewModel.paymentComponent.giniPaymentLanguage)
val context = requireContext().wrappedWithGiniPaymentThemeAndLocale(viewModel.paymentComponent.giniPaymentLanguage)
errorSnackbar?.dismiss()
errorSnackbar = Snackbar.make(context, root, text, Snackbar.LENGTH_INDEFINITE).apply {
if (context.getFontScale() < 1.5) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,19 @@ import net.gini.android.health.api.models.PaymentRequestInput
import net.gini.android.health.sdk.GiniHealth
import net.gini.android.health.sdk.preferences.UserPreferences
import net.gini.android.health.sdk.review.model.PaymentDetails
import net.gini.android.health.sdk.review.model.PaymentRequest
import net.gini.android.health.sdk.review.model.ResultWrapper
import net.gini.android.health.sdk.review.model.withFeedback
import net.gini.android.health.sdk.review.pager.DocumentPageAdapter
import net.gini.android.health.sdk.util.adjustToLocalDecimalSeparation
import net.gini.android.health.sdk.util.toBackendFormat
import net.gini.android.health.sdk.util.withPrev
import net.gini.android.internal.payment.api.model.PaymentRequest
import net.gini.android.internal.payment.paymentComponent.PaymentComponent
import net.gini.android.internal.payment.paymentComponent.SelectedPaymentProviderAppState
import net.gini.android.internal.payment.paymentProvider.PaymentProviderApp
import net.gini.android.internal.payment.review.ValidationMessage
import net.gini.android.internal.payment.utils.FlowBottomSheetsManager
import net.gini.android.internal.payment.utils.createTempPdfFile
import org.slf4j.LoggerFactory
import java.io.File

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import android.content.Context
import android.util.AttributeSet
import android.view.View
import android.widget.Button
import android.widget.TextView
import androidx.annotation.VisibleForTesting
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat
Expand Down Expand Up @@ -96,9 +97,9 @@ class PaymentComponentView(context: Context, attrs: AttributeSet?) : ConstraintL
var dismissListener: ButtonClickListener? = null

private val binding = GpsViewPaymentComponentBinding.inflate(getLayoutInflaterWithGiniPaymentThemeAndLocale(GiniInternalPaymentModule.getSDKLanguage(context)?.languageLocale()), this)
private lateinit var selectBankButton: Button
private lateinit var payInvoiceButton: Button
private lateinit var paymentProviderAppIconHolder: GpsPaymentProviderIconHolderBinding
private lateinit var selectBankButton: Button

override fun onAttachedToWindow() {
super.onAttachedToWindow()
Expand Down Expand Up @@ -305,6 +306,10 @@ class PaymentComponentView(context: Context, attrs: AttributeSet?) : ConstraintL
payInvoiceButton.text = if (reviewFragmentWillBeShown) resources.getString(R.string.gps_continue_to_overview) else resources.getString(R.string.gps_pay_button)
}

fun getMoreInformationLabel() = binding.gpsMoreInformation

fun getBankPickerButton() = selectBankButton

private fun addButtonInputHandlers() {
selectBankButton.setIntervalClickListener {
if (paymentComponent == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package net.gini.android.internal.payment.utils
import java.io.File
import java.io.FileOutputStream

internal fun File.createTempPdfFile(byteArray: ByteArray, fileName: String): File {
fun File.createTempPdfFile(byteArray: ByteArray, fileName: String): File {
val file = File("${this.path}/", "${fileName}.pdf")

FileOutputStream(file, false).use { outputStream ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import java.util.Locale

internal fun Context.wrappedWithGiniPaymentTheme(): Context = ContextThemeWrapper(this, R.style.GiniPaymentTheme)

internal fun Context.wrappedWithGiniPaymentThemeAndLocale(locale: Locale? = null): Context =
fun Context.wrappedWithGiniPaymentThemeAndLocale(locale: Locale? = null): Context =
if (locale == null || locale.language.isEmpty()) {
this.wrappedWithGiniPaymentTheme()
} else {
Expand Down Expand Up @@ -50,7 +50,7 @@ internal fun Context.generateBitmapDrawableIcon(icon: ByteArray, iconSize: Int):
}
}

internal fun Context.getFontScale() = resources.configuration.fontScale
fun Context.getFontScale() = resources.configuration.fontScale

fun Context.createShareWithPendingIntent(): PendingIntent = PendingIntent.getBroadcast(
this, 123,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ import net.gini.android.internal.payment.GiniInternalPaymentModule
import java.io.File
import java.util.Locale

internal fun Fragment.getLayoutInflaterWithGiniPaymentThemeAndLocale(inflater: LayoutInflater, locale: Locale? = null): LayoutInflater {
fun Fragment.getLayoutInflaterWithGiniPaymentThemeAndLocale(inflater: LayoutInflater, locale: Locale? = null): LayoutInflater {
return inflater.cloneInContext(requireContext().wrappedWithGiniPaymentThemeAndLocale(locale))
}

internal fun Fragment.getLocaleStringResource(resourceId: Int, giniPaymentModule: GiniInternalPaymentModule?): String {
fun Fragment.getLocaleStringResource(resourceId: Int, giniPaymentModule: GiniInternalPaymentModule?): String {
if (giniPaymentModule?.localizedContext == null) {
giniPaymentModule?.localizedContext = context?.createConfigurationContext(resources.configuration)
}
Expand Down

0 comments on commit ece6a86

Please sign in to comment.