Skip to content

Commit

Permalink
feat(POM-323): (Card Tokenization) Card details (#158)
Browse files Browse the repository at this point in the history
  • Loading branch information
vitalii-vanziak-cko authored Jan 24, 2024
1 parent abe76b9 commit ac7c610
Show file tree
Hide file tree
Showing 34 changed files with 808 additions and 121 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

buildscript {
ext {
androidGradlePluginVersion = '8.2.0'
androidGradlePluginVersion = '8.2.1'
kotlinVersion = '1.9.20'
kspVersion = '1.9.20-1.0.14'
dokkaVersion = '1.9.10'
Expand Down
19 changes: 19 additions & 0 deletions sdk/src/main/res/values-ar/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,23 @@
<string name="po_card_update_error_cvc">رقم كود التحقق CVV غير صالح</string>
<string name="po_card_update_error_generic">حدث خطأ ما، يرجى المحاولة مرة أخرى</string>

<!-- Card Tokenization -->
<string name="po_card_tokenization_title">إضافة بطاقة جديدة</string>
<string name="po_card_tokenization_button_submit">إرسال</string>
<string name="po_card_tokenization_button_cancel">إلغاء</string>
<string name="po_card_tokenization_preferred_scheme">النظام المفضل للبطاقة</string>
<string name="po_card_tokenization_card_details_cardholder_placeholder">اسم حامل البطاقة</string>
<string name="po_card_tokenization_card_details_cvc_placeholder">كود التحقق CVV</string>
<string name="po_card_tokenization_card_details_expiration_placeholder">شهر / سنة</string>
<string name="po_card_tokenization_card_details_number_placeholder">4242 4242 4242 4242</string>
<string name="po_card_tokenization_billing_address_title">عنوان إرسال الفواتير</string>
<string name="po_card_tokenization_billing_address_street">سطر العنوان %d</string>
<string name="po_card_tokenization_error_card">إنَّ معلومات البطاقة غير صالحة</string>
<string name="po_card_tokenization_error_card_expiration">إنّ تاريخ صلاحية البطاقة غير صالح</string>
<string name="po_card_tokenization_error_card_number">إنّ رقم البطاقة غير صالح</string>
<string name="po_card_tokenization_error_cardholder">اسم حامل البطاقة غير صالح</string>
<string name="po_card_tokenization_error_cvc">رقم كود التحقق CVV غير صالح</string>
<string name="po_card_tokenization_error_generic">حدث خطأ ما، يرجى المحاولة مرة أخرى</string>
<string name="po_card_tokenization_error_track_data">تاريخ انتهاء صلاحية البطاقة و/أو كود التحقق CVV غير صالح</string>

</resources>
19 changes: 19 additions & 0 deletions sdk/src/main/res/values-fr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,23 @@
<string name="po_card_update_error_cvc">Le code CVV de votre carte est incorrect.</string>
<string name="po_card_update_error_generic">Une erreur s’est produite, veuillez réessayer.</string>

<!-- Card Tokenization -->
<string name="po_card_tokenization_title">Ajouter une nouvelle carte</string>
<string name="po_card_tokenization_button_submit">Envoyer</string>
<string name="po_card_tokenization_button_cancel">Annuler</string>
<string name="po_card_tokenization_preferred_scheme">Réseau de Carte Préféré</string>
<string name="po_card_tokenization_card_details_cardholder_placeholder">Nom du porteur de carte</string>
<string name="po_card_tokenization_card_details_cvc_placeholder">CVV</string>
<string name="po_card_tokenization_card_details_expiration_placeholder">MM / AA</string>
<string name="po_card_tokenization_card_details_number_placeholder">4242 4242 4242 4242</string>
<string name="po_card_tokenization_billing_address_title">Adresse de Facturation</string>
<string name="po_card_tokenization_billing_address_street">Ligne d’adresse %d</string>
<string name="po_card_tokenization_error_card">Les informations de votre carte sont incorrectes.</string>
<string name="po_card_tokenization_error_card_expiration">La date d’expiration de votre carte est incorrecte.</string>
<string name="po_card_tokenization_error_card_number">Votre numéro de carte est incorrect.</string>
<string name="po_card_tokenization_error_cardholder">Le nom du porteur de carte est incorrect.</string>
<string name="po_card_tokenization_error_cvc">Le code CVV de votre carte est incorrect.</string>
<string name="po_card_tokenization_error_generic">Une erreur s’est produite, veuillez réessayer.</string>
<string name="po_card_tokenization_error_track_data">La date d’expiration de votre carte ou son code CVV sont incorrects.</string>

</resources>
19 changes: 19 additions & 0 deletions sdk/src/main/res/values-pt/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,23 @@
<string name="po_card_update_error_cvc">O código de segurança do seu cartão é inválido.</string>
<string name="po_card_update_error_generic">Ocorreu um erro ao processar o seu cartão, por favor tente novamente.</string>

<!-- Card Tokenization -->
<string name="po_card_tokenization_title">Adicionar novo cartão</string>
<string name="po_card_tokenization_button_submit">Enviar</string>
<string name="po_card_tokenization_button_cancel">Cancelar</string>
<string name="po_card_tokenization_preferred_scheme">Rede de pagamento preferencial</string>
<string name="po_card_tokenization_card_details_cardholder_placeholder">Nome no cartão</string>
<string name="po_card_tokenization_card_details_cvc_placeholder">CVC</string>
<string name="po_card_tokenization_card_details_expiration_placeholder">MM / AA</string>
<string name="po_card_tokenization_card_details_number_placeholder">4242 4242 4242 4242</string>
<string name="po_card_tokenization_billing_address_title">Morada de faturação</string>
<string name="po_card_tokenization_billing_address_street">Endereço %d</string>
<string name="po_card_tokenization_error_card">Os dados do seu cartão são inválidos.</string>
<string name="po_card_tokenization_error_card_expiration">A data de validade do seu cartão é inválida.</string>
<string name="po_card_tokenization_error_card_number">O número do seu cartão é inválido.</string>
<string name="po_card_tokenization_error_cardholder">O nome no cartão é inválido.</string>
<string name="po_card_tokenization_error_cvc">O código de segurança do seu cartão é inválido.</string>
<string name="po_card_tokenization_error_generic">Ocorreu um erro ao processar o seu cartão, por favor tente novamente.</string>
<string name="po_card_tokenization_error_track_data">A data de validade e/ou o código de segurança do seu cartão são inválidos.</string>

</resources>
19 changes: 19 additions & 0 deletions sdk/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,23 @@
<string name="po_card_update_error_cvc">Your card CVC is invalid.</string>
<string name="po_card_update_error_generic">Something went wrong, please try again.</string>

<!-- Card Tokenization -->
<string name="po_card_tokenization_title">Add New Card</string>
<string name="po_card_tokenization_button_submit">Submit</string>
<string name="po_card_tokenization_button_cancel">Cancel</string>
<string name="po_card_tokenization_preferred_scheme">Preferred Scheme</string>
<string name="po_card_tokenization_card_details_cardholder_placeholder">Cardholder Name</string>
<string name="po_card_tokenization_card_details_cvc_placeholder">CVC</string>
<string name="po_card_tokenization_card_details_expiration_placeholder">MM / YY</string>
<string name="po_card_tokenization_card_details_number_placeholder">4242 4242 4242 4242</string>
<string name="po_card_tokenization_billing_address_title">Billing Address</string>
<string name="po_card_tokenization_billing_address_street">Address line %d</string>
<string name="po_card_tokenization_error_card">Your card information is invalid.</string>
<string name="po_card_tokenization_error_card_expiration">Your card expiration date is invalid.</string>
<string name="po_card_tokenization_error_card_number">Your card number is invalid.</string>
<string name="po_card_tokenization_error_cardholder">The cardholder name is invalid.</string>
<string name="po_card_tokenization_error_cvc">Your card CVC is invalid.</string>
<string name="po_card_tokenization_error_generic">Something went wrong, please try again.</string>
<string name="po_card_tokenization_error_track_data">Your card expiration date and/or CVC is invalid.</string>

</resources>
6 changes: 6 additions & 0 deletions ui-core/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,12 @@ android {
kotlinOptions {
jvmTarget = '17'
freeCompilerArgs += '-opt-in=com.processout.sdk.ui.core.annotation.ProcessOutInternalApi'
if (project.findProperty("composeCompilerReports") == "true") {
freeCompilerArgs += [
"-P", "plugin:androidx.compose.compiler.plugins.kotlin:reportsDestination=" +
project.buildDir.absolutePath + "/compose"
]
}
}

buildFeatures {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import com.processout.sdk.ui.core.annotation.ProcessOutInternalApi
import com.processout.sdk.ui.core.state.POActionStateExtended
import com.processout.sdk.ui.core.state.POImmutableCollection
import com.processout.sdk.ui.core.state.POImmutableList
import com.processout.sdk.ui.core.style.POActionsContainerStyle
import com.processout.sdk.ui.core.style.POAxis
import com.processout.sdk.ui.core.theme.ProcessOutTheme
Expand All @@ -21,7 +21,7 @@ import com.processout.sdk.ui.core.theme.ProcessOutTheme
@ProcessOutInternalApi
@Composable
fun POActionsContainer(
actions: POImmutableCollection<POActionStateExtended>,
actions: POImmutableList<POActionStateExtended>,
style: POActionsContainer.Style = POActionsContainer.default
) {
Column {
Expand Down Expand Up @@ -62,7 +62,7 @@ fun POActionsContainer(

@Composable
private fun Actions(
actions: POImmutableCollection<POActionStateExtended>,
actions: POImmutableList<POActionStateExtended>,
modifier: Modifier = Modifier,
primaryStyle: POButton.Style = POButton.primary,
secondaryStyle: POButton.Style = POButton.secondary
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.processout.sdk.ui.core.filter

import androidx.compose.runtime.Immutable
import androidx.compose.ui.text.input.TextFieldValue
import com.processout.sdk.ui.core.annotation.ProcessOutInternalApi

/** @suppress */
@ProcessOutInternalApi
@Immutable
interface POInputFilter {

fun filter(value: TextFieldValue): TextFieldValue
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package com.processout.sdk.ui.core.state

import androidx.compose.runtime.Immutable
import com.processout.sdk.ui.core.annotation.ProcessOutInternalApi

/** @suppress */
@ProcessOutInternalApi
@Immutable
data class POActionState(
val text: String,
val primary: Boolean,
Expand All @@ -13,7 +15,19 @@ data class POActionState(

/** @suppress */
@ProcessOutInternalApi
@Immutable
data class POActionStateExtended(
val state: POActionState,
val onClick: () -> Unit
)
) {
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false
other as POActionStateExtended
return state == other.state
}

override fun hashCode(): Int {
return state.hashCode()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,15 @@ package com.processout.sdk.ui.core.state

import androidx.annotation.DrawableRes
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.runtime.Immutable
import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.text.input.VisualTransformation
import com.processout.sdk.ui.core.annotation.ProcessOutInternalApi
import com.processout.sdk.ui.core.formatter.POFormatter
import com.processout.sdk.ui.core.filter.POInputFilter

/** @suppress */
@ProcessOutInternalApi
@Immutable
data class POFieldState(
val key: String,
val value: TextFieldValue = TextFieldValue(),
Expand All @@ -16,7 +19,8 @@ data class POFieldState(
val placeholder: String? = null,
@DrawableRes
val iconResId: Int? = null,
val formatter: POFormatter? = null,
val inputFilter: POInputFilter? = null,
val visualTransformation: VisualTransformation = VisualTransformation.None,
val keyboardOptions: KeyboardOptions = KeyboardOptions.Default,
val enabled: Boolean = true,
val isError: Boolean = false,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ import com.processout.sdk.ui.core.annotation.ProcessOutInternalApi
/** @suppress */
@ProcessOutInternalApi
@Immutable
data class POImmutableCollection<T>(
val elements: Collection<T>
data class POImmutableList<E>(
val elements: List<E>
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.processout.sdk.ui.core.state

import androidx.annotation.DrawableRes
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.Stable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.ui.text.input.TextFieldValue
import androidx.compose.ui.text.input.VisualTransformation
import com.processout.sdk.ui.core.annotation.ProcessOutInternalApi
import com.processout.sdk.ui.core.filter.POInputFilter

/** @suppress */
@ProcessOutInternalApi
@Stable
data class POMutableFieldState(
val key: String,
val value: MutableState<TextFieldValue> = mutableStateOf(TextFieldValue()),
val title: String? = null,
val description: String? = null,
val placeholder: String? = null,
@DrawableRes
val iconResId: MutableState<Int?> = mutableStateOf(null),
val inputFilter: POInputFilter? = null,
val visualTransformation: VisualTransformation = VisualTransformation.None,
val keyboardOptions: KeyboardOptions = KeyboardOptions.Default,
val enabled: Boolean = true,
val isError: Boolean = false,
val forceTextDirectionLtr: Boolean = false
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.processout.sdk.ui.core.state

import androidx.compose.runtime.Stable
import com.processout.sdk.ui.core.annotation.ProcessOutInternalApi

/** @suppress */
@ProcessOutInternalApi
@Stable
data class POStableList<E>(
val elements: List<E>
)
6 changes: 6 additions & 0 deletions ui/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,12 @@ android {
jvmTarget = '17'
freeCompilerArgs += '-opt-in=com.processout.sdk.core.annotation.ProcessOutInternalApi'
freeCompilerArgs += '-opt-in=com.processout.sdk.ui.core.annotation.ProcessOutInternalApi'
if (project.findProperty("composeCompilerReports") == "true") {
freeCompilerArgs += [
"-P", "plugin:androidx.compose.compiler.plugins.kotlin:reportsDestination=" +
project.buildDir.absolutePath + "/compose"
]
}
}

buildFeatures {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ internal class CardTokenizationBottomSheet : BaseBottomSheetDialogFragment<POCar

CardTokenizationScreen(
state = viewModel.state.collectAsStateWithLifecycle().value,
sections = viewModel.sections,
onEvent = remember { viewModel::onEvent },
style = CardTokenizationScreen.style(custom = configuration?.style)
)
Expand Down
Loading

0 comments on commit ac7c610

Please sign in to comment.