Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix deprecated kotlin extension #365

Merged
merged 5 commits into from
Jan 28, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-parcelize'
apply plugin: 'kotlin-android'

android {
Expand Down
103 changes: 36 additions & 67 deletions app/src/kotlin/java/co/omise/android/example/CheckoutActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,45 +15,25 @@ import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import co.omise.android.AuthorizingPaymentURLVerifier.Companion.EXTRA_AUTHORIZED_URLSTRING
import co.omise.android.AuthorizingPaymentURLVerifier.Companion.EXTRA_EXPECTED_RETURN_URLSTRING_PATTERNS
import co.omise.android.api.Client
import co.omise.android.api.RequestListener
import co.omise.android.config.ButtonCustomization
import co.omise.android.config.ButtonCustomizationBuilder
import co.omise.android.config.ButtonType
import co.omise.android.config.LabelCustomizationBuilder
import co.omise.android.config.TextBoxCustomizationBuilder
import co.omise.android.config.ThemeConfig
import co.omise.android.config.ToolbarCustomizationBuilder
import co.omise.android.config.UiCustomizationBuilder
import co.omise.android.ui.AuthorizingPaymentActivity.Companion.EXTRA_THREE_DS_REQUESTOR_APP_URL
import co.omise.android.ui.AuthorizingPaymentActivity.Companion.EXTRA_UI_CUSTOMIZATION
import co.omise.android.config.*
import co.omise.android.models.Amount
import co.omise.android.models.Source
import co.omise.android.models.Token
import co.omise.android.ui.AuthorizingPaymentActivity
import co.omise.android.ui.AuthorizingPaymentActivity.Companion.EXTRA_THREE_DS_REQUESTOR_APP_URL
import co.omise.android.ui.AuthorizingPaymentActivity.Companion.EXTRA_UI_CUSTOMIZATION
import co.omise.android.ui.AuthorizingPaymentResult
import co.omise.android.ui.CreditCardActivity
import co.omise.android.ui.OmiseActivity
import co.omise.android.ui.PaymentCreatorActivity
import co.omise.android.ui.*
import com.google.android.material.snackbar.Snackbar
import kotlinx.android.synthetic.main.activity_checkout.amount_edit
import kotlinx.android.synthetic.main.activity_checkout.authorize_url_button
import kotlinx.android.synthetic.main.activity_checkout.choose_payment_method_button
import kotlinx.android.synthetic.main.activity_checkout.credit_card_button
import kotlinx.android.synthetic.main.activity_checkout.currency_edit

inline fun <reified T : Parcelable> Intent.parcelable(key: String?): T? = when {
// https://stackoverflow.com/questions/72571804/getserializableextra-and-getparcelableextra-are-deprecated-what-is-the-alternat/73543350#73543350
Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU -> getParcelableExtra(key, T::class.java)
else -> @Suppress("DEPRECATION") getParcelableExtra(key) as? T
}

class CheckoutActivity : AppCompatActivity() {

companion object {

private const val TAG = "CheckoutActivity"
private const val PUBLIC_KEY = "[PUBLIC_KEY]"
private const val PUBLIC_KEY = "pkey_test_5tnt1gxjf6ecypmkfi8"
private const val GOOGLEPAY_MERCHANT_ID = "[GOOGLEPAY_MERCHANT_ID]"
private const val GOOGLEPAY_REQUEST_BILLING_ADDRESS = false
private const val GOOGLEPAY_REQUEST_PHONE_NUMBER = false
Expand All @@ -64,14 +44,12 @@ class CheckoutActivity : AppCompatActivity() {
private const val CREDIT_CARD_REQUEST_CODE = 0x3D7
}

private val amountEdit: EditText by lazy { amount_edit }
private val currencyEdit: EditText by lazy { currency_edit }
private val choosePaymentMethodButton: Button by lazy { choose_payment_method_button }
private val creditCardButton: Button by lazy { credit_card_button }
private val authorizeUrlButton: Button by lazy { authorize_url_button }
private val snackbar: Snackbar by lazy {
Snackbar.make(findViewById(R.id.content), "", Snackbar.LENGTH_SHORT)
}
private lateinit var amountEdit: EditText
private lateinit var currencyEdit: EditText
private lateinit var choosePaymentMethodButton: Button
private lateinit var creditCardButton: Button
private lateinit var authorizeUrlButton: Button
private lateinit var snackbar: Snackbar

private lateinit var authorizingPaymentLauncher: ActivityResultLauncher<Intent>
private lateinit var paymentCreatorLauncher: ActivityResultLauncher<Intent>
Expand All @@ -82,36 +60,15 @@ class CheckoutActivity : AppCompatActivity() {
setContentView(R.layout.activity_checkout)

supportActionBar?.title = getString(R.string.activity_checkout)
authorizingPaymentLauncher = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) { result: ActivityResult ->
handleActivityResult(
AUTHORIZING_PAYMENT_REQUEST_CODE,
result.resultCode,
result.data
)
}

paymentCreatorLauncher = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) { result: ActivityResult ->
handleActivityResult(
PAYMENT_CREATOR_REQUEST_CODE,
result.resultCode,
result.data
)
}

creditCardLauncher = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) { result: ActivityResult ->
handleActivityResult(
CREDIT_CARD_REQUEST_CODE,
result.resultCode,
result.data
)
}
amountEdit = findViewById(R.id.amount_edit)
currencyEdit = findViewById(R.id.currency_edit)
choosePaymentMethodButton = findViewById(R.id.choose_payment_method_button)
creditCardButton = findViewById(R.id.credit_card_button)
authorizeUrlButton = findViewById(R.id.authorize_url_button)
snackbar = Snackbar.make(findViewById(R.id.content), "", Snackbar.LENGTH_SHORT)

setupActivityLaunchers()

choosePaymentMethodButton.setOnClickListener { choosePaymentMethod() }
creditCardButton.setOnClickListener { payByCreditCard() }
Expand All @@ -120,7 +77,20 @@ class CheckoutActivity : AppCompatActivity() {
startAuthoringPaymentActivity(authorizeUrl, returnUrl)
}
}
}

private fun setupActivityLaunchers() {
authorizingPaymentLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
handleActivityResult(AUTHORIZING_PAYMENT_REQUEST_CODE, result.resultCode, result.data)
}

paymentCreatorLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
handleActivityResult(PAYMENT_CREATOR_REQUEST_CODE, result.resultCode, result.data)
}

creditCardLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
handleActivityResult(CREDIT_CARD_REQUEST_CODE, result.resultCode, result.data)
}
}

private fun choosePaymentMethod() {
Expand All @@ -130,7 +100,7 @@ class CheckoutActivity : AppCompatActivity() {
val currency = currencyEdit.text.toString().trim().lowercase()
val amount = Amount.fromLocalAmount(localAmount, currency)

Intent(this, PaymentCreatorActivity::class.java).run {
val intent = Intent(this, PaymentCreatorActivity::class.java).apply {
putExtra(OmiseActivity.EXTRA_PKEY, PUBLIC_KEY)
putExtra(OmiseActivity.EXTRA_AMOUNT, amount.amount)
putExtra(OmiseActivity.EXTRA_CURRENCY, amount.currency)
Expand All @@ -141,17 +111,16 @@ class CheckoutActivity : AppCompatActivity() {
if (isUsedSpecificsPaymentMethods) {
putExtra(OmiseActivity.EXTRA_CAPABILITY, PaymentSetting.createCapabilityFromPreferences(this@CheckoutActivity))
}

paymentCreatorLauncher.launch(this)
}
}
paymentCreatorLauncher.launch(intent)

}

private fun payByCreditCard() {
Intent(this, CreditCardActivity::class.java).run {
val intent = Intent(this, CreditCardActivity::class.java).apply {
putExtra(OmiseActivity.EXTRA_PKEY, PUBLIC_KEY)
creditCardLauncher.launch(this)
}
creditCardLauncher.launch(intent)
}

private fun startAuthoringPaymentActivity(authorizeUrl: String, returnUrl: String) {
Expand Down
1 change: 0 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@
<activity android:name="co.omise.android.ui.AuthorizingPaymentActivity" />
<activity android:name="co.omise.android.ui.PaymentCreatorActivity" />
<activity android:name="co.omise.android.ui.FlutterUIHostActivity" />
<activity android:name="co.omise.android.ui.GooglePayActivity" />
<meta-data android:name="com.google.android.gms.wallet.api.enabled" android:value="true" />
</application>

Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ buildscript {

omise_threeds_sdk_version = '1.0.0-alpha12'

kotlin_version = '1.7.10'
kotlin_version = '1.9.10'
android_plugin_version = '8.2.2'
appcompat_version = '1.3.0'
joda_time_version = '2.9.2'
Expand Down
7 changes: 2 additions & 5 deletions sdk/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@ apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'maven-publish'
apply plugin: 'signing'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-parcelize'
apply plugin: 'jacoco'
apply plugin: 'org.sonarqube'
apply plugin: 'org.jlleitschuh.gradle.ktlint'

android {
buildFeatures {
buildConfig true
viewBinding true
}
defaultConfig {
namespace 'co.omise.android'
Expand Down Expand Up @@ -53,10 +54,6 @@ android {
disable 'InvalidPackage' // okio
}

androidExtensions {
experimental = true
}

testOptions {
// It's required for Sonar
reportDir "${project.buildDir}/reports/coverage/androidTest/production/debug/connected"
Expand Down
34 changes: 0 additions & 34 deletions sdk/src/androidTest/java/co/omise/android/CardNumberTest.java

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import android.os.Parcelable
import androidx.test.ext.junit.runners.AndroidJUnit4
import co.omise.android.SDKTest
import co.omise.android.extensions.getParcelableCompat
import kotlinx.android.parcel.Parcelize
import kotlinx.parcelize.Parcelize
import org.joda.time.DateTime
import org.joda.time.DateTimeZone
import org.junit.Test
Expand Down
Loading
Loading