diff --git a/android/src/main/java/com/boltreactnativesdk/GooglePayButtonView.kt b/android/src/main/java/com/boltreactnativesdk/GooglePayButtonView.kt index 17fca4a..788c2aa 100644 --- a/android/src/main/java/com/boltreactnativesdk/GooglePayButtonView.kt +++ b/android/src/main/java/com/boltreactnativesdk/GooglePayButtonView.kt @@ -1,9 +1,6 @@ package com.boltreactnativesdk import android.content.Context -import android.graphics.Outline -import android.view.View -import android.view.ViewOutlineProvider import android.widget.FrameLayout import com.facebook.react.bridge.ReactContext import com.facebook.react.uimanager.UIManagerHelper @@ -20,25 +17,16 @@ class GooglePayButtonView(context: Context) : FrameLayout(context) { private var currentButtonType: String = "plain" private var currentButtonTheme: String = "dark" - private var cornerRadiusPx: Float = 0f + private var cornerRadiusPx: Int = 0 init { rebuildButton() } - fun updateBorderRadius(radiusPx: Float) { + fun updateBorderRadius(radiusPx: Int) { + if (radiusPx == cornerRadiusPx) return cornerRadiusPx = radiusPx - if (radiusPx > 0f) { - outlineProvider = object : ViewOutlineProvider() { - override fun getOutline(view: View, outline: Outline) { - outline.setRoundRect(0, 0, view.width, view.height, radiusPx) - } - } - clipToOutline = true - } else { - outlineProvider = ViewOutlineProvider.BACKGROUND - clipToOutline = false - } + rebuildButton() } fun updateButtonType(type: String) { @@ -60,6 +48,7 @@ class GooglePayButtonView(context: Context) : FrameLayout(context) { val options = ButtonOptions.newBuilder() .setButtonType(mapButtonType(currentButtonType)) .setButtonTheme(mapButtonTheme(currentButtonTheme)) + .setCornerRadius(cornerRadiusPx) .setAllowedPaymentMethods(ALLOWED_PAYMENT_METHODS) .build() button.initialize(options) diff --git a/android/src/main/java/com/boltreactnativesdk/GooglePayButtonViewManager.kt b/android/src/main/java/com/boltreactnativesdk/GooglePayButtonViewManager.kt index fffbb1c..0408318 100644 --- a/android/src/main/java/com/boltreactnativesdk/GooglePayButtonViewManager.kt +++ b/android/src/main/java/com/boltreactnativesdk/GooglePayButtonViewManager.kt @@ -44,6 +44,7 @@ class GooglePayButtonViewManager : @ReactProp(name = "borderRadius", defaultFloat = 0f) override fun setBorderRadius(view: GooglePayButtonView, borderRadius: Float) { - view.updateBorderRadius(PixelUtil.toPixelFromDIP(borderRadius)) + val radiusPx = PixelUtil.toPixelFromDIP(borderRadius).toInt().coerceAtLeast(0) + view.updateBorderRadius(radiusPx) } } diff --git a/example/src/App.tsx b/example/src/App.tsx index cb84913..f173d44 100644 --- a/example/src/App.tsx +++ b/example/src/App.tsx @@ -245,6 +245,7 @@ const AddCardScreen = () => { onComplete={handleGooglePayComplete} onError={handleWalletError} style={styles.walletButton} + borderRadius={25} /> )}