From ece6a865bdb28a1e1515644599c9931f59f398f5 Mon Sep 17 00:00:00 2001 From: Levente Lorincz Date: Mon, 7 Oct 2024 11:47:08 +0300 Subject: [PATCH] refactor(health-sdk): Updates and fixes for Review and PaymentComponentView --- .../health/sdk/review/ReviewFragment.kt | 19 ++++++++----------- .../health/sdk/review/ReviewViewModel.kt | 3 ++- .../paymentComponent/PaymentComponentView.kt | 7 ++++++- .../android/internal/payment/utils/File.kt | 2 +- .../payment/utils/extensions/Context.kt | 4 ++-- .../payment/utils/extensions/Fragment.kt | 4 ++-- 6 files changed, 21 insertions(+), 18 deletions(-) diff --git a/health-sdk/sdk/src/main/java/net/gini/android/health/sdk/review/ReviewFragment.kt b/health-sdk/sdk/src/main/java/net/gini/android/health/sdk/review/ReviewFragment.kt index fe565167d..a708376b0 100644 --- a/health-sdk/sdk/src/main/java/net/gini/android/health/sdk/review/ReviewFragment.kt +++ b/health-sdk/sdk/src/main/java/net/gini/android/health/sdk/review/ReviewFragment.kt @@ -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]. @@ -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 { @@ -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) { diff --git a/health-sdk/sdk/src/main/java/net/gini/android/health/sdk/review/ReviewViewModel.kt b/health-sdk/sdk/src/main/java/net/gini/android/health/sdk/review/ReviewViewModel.kt index 575323221..883b5ccd6 100644 --- a/health-sdk/sdk/src/main/java/net/gini/android/health/sdk/review/ReviewViewModel.kt +++ b/health-sdk/sdk/src/main/java/net/gini/android/health/sdk/review/ReviewViewModel.kt @@ -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 diff --git a/internal-payment-sdk/sdk/src/main/java/net/gini/android/internal/payment/paymentComponent/PaymentComponentView.kt b/internal-payment-sdk/sdk/src/main/java/net/gini/android/internal/payment/paymentComponent/PaymentComponentView.kt index 3c06eea57..fe3a8ee33 100644 --- a/internal-payment-sdk/sdk/src/main/java/net/gini/android/internal/payment/paymentComponent/PaymentComponentView.kt +++ b/internal-payment-sdk/sdk/src/main/java/net/gini/android/internal/payment/paymentComponent/PaymentComponentView.kt @@ -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 @@ -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() @@ -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) { diff --git a/internal-payment-sdk/sdk/src/main/java/net/gini/android/internal/payment/utils/File.kt b/internal-payment-sdk/sdk/src/main/java/net/gini/android/internal/payment/utils/File.kt index 722f9a4a8..0f8f4eb0d 100644 --- a/internal-payment-sdk/sdk/src/main/java/net/gini/android/internal/payment/utils/File.kt +++ b/internal-payment-sdk/sdk/src/main/java/net/gini/android/internal/payment/utils/File.kt @@ -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 -> diff --git a/internal-payment-sdk/sdk/src/main/java/net/gini/android/internal/payment/utils/extensions/Context.kt b/internal-payment-sdk/sdk/src/main/java/net/gini/android/internal/payment/utils/extensions/Context.kt index f1390e8f6..0e7511c86 100644 --- a/internal-payment-sdk/sdk/src/main/java/net/gini/android/internal/payment/utils/extensions/Context.kt +++ b/internal-payment-sdk/sdk/src/main/java/net/gini/android/internal/payment/utils/extensions/Context.kt @@ -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 { @@ -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, diff --git a/internal-payment-sdk/sdk/src/main/java/net/gini/android/internal/payment/utils/extensions/Fragment.kt b/internal-payment-sdk/sdk/src/main/java/net/gini/android/internal/payment/utils/extensions/Fragment.kt index f20213244..27ab755b7 100644 --- a/internal-payment-sdk/sdk/src/main/java/net/gini/android/internal/payment/utils/extensions/Fragment.kt +++ b/internal-payment-sdk/sdk/src/main/java/net/gini/android/internal/payment/utils/extensions/Fragment.kt @@ -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) }