Skip to content

Commit c67b48e

Browse files
cttsai-stripecodex
andcommitted
Refactor UiDefinitionFactory form creation
Committed-By-Agent: codex Co-authored-by: codex <noreply@openai.com>
1 parent f17efd0 commit c67b48e

8 files changed

Lines changed: 24 additions & 19 deletions

File tree

paymentsheet/src/main/java/com/stripe/android/lpmfoundations/paymentmethod/PaymentMethodMetadata.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -331,21 +331,25 @@ internal data class PaymentMethodMetadata(
331331
uiDefinitionFactoryArgumentsFactory: UiDefinitionFactory.Arguments.Factory,
332332
): List<FormElement>? {
333333
return if (isExternalPaymentMethod(code)) {
334-
getUiDefinitionFactoryForExternalPaymentMethod(code)?.createFormElements(
334+
getUiDefinitionFactoryForExternalPaymentMethod(code)?.formElements(
335+
paymentMethodCode = code,
335336
metadata = this,
337+
sharedDataSpecs = sharedDataSpecs,
336338
arguments = uiDefinitionFactoryArgumentsFactory.create(this, requiresMandate = false)
337339
)
338340
} else if (isCustomPaymentMethod(code)) {
339-
getUiDefinitionFactoryForCustomPaymentMethod(code)?.createFormElements(
341+
getUiDefinitionFactoryForCustomPaymentMethod(code)?.formElements(
342+
paymentMethodCode = code,
340343
metadata = this,
344+
sharedDataSpecs = sharedDataSpecs,
341345
arguments = uiDefinitionFactoryArgumentsFactory.create(this, requiresMandate = false)
342346
)
343347
} else {
344348
val definition = supportedPaymentMethodDefinitions().firstOrNull { it.type.code == code } ?: return null
345349

346350
definition.uiDefinitionFactory(this).formElements(
351+
paymentMethodCode = code,
347352
metadata = this,
348-
definition = definition,
349353
sharedDataSpecs = sharedDataSpecs,
350354
arguments = uiDefinitionFactoryArgumentsFactory.create(
351355
metadata = this,

paymentsheet/src/main/java/com/stripe/android/lpmfoundations/paymentmethod/UiDefinitionFactory.kt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -141,20 +141,20 @@ internal sealed interface UiDefinitionFactory {
141141
return createSupportedPaymentMethod(metadata, sharedDataSpec).asFormHeaderInformation(incentive)
142142
}
143143

144-
fun createFormElements(
144+
fun createBaseFormElements(
145145
metadata: PaymentMethodMetadata,
146146
sharedDataSpec: SharedDataSpec,
147147
transformSpecToElements: TransformSpecToElements,
148148
arguments: Arguments,
149149
): List<FormElement> {
150-
return createFormElements(
150+
return createBaseFormElements(
151151
metadata = metadata,
152152
sharedDataSpec = sharedDataSpec,
153153
transformSpecToElements = transformSpecToElements,
154154
)
155155
}
156156

157-
fun createFormElements(
157+
fun createBaseFormElements(
158158
metadata: PaymentMethodMetadata,
159159
sharedDataSpec: SharedDataSpec,
160160
transformSpecToElements: TransformSpecToElements,
@@ -180,7 +180,7 @@ internal sealed interface UiDefinitionFactory {
180180
return createSupportedPaymentMethod(metadata).asFormHeaderInformation(incentive)
181181
}
182182

183-
fun createFormElements(metadata: PaymentMethodMetadata, arguments: Arguments): List<FormElement> {
183+
fun createBaseFormElements(metadata: PaymentMethodMetadata, arguments: Arguments): List<FormElement> {
184184
val builder = FormElementsBuilder(arguments)
185185

186186
buildFormElements(metadata, arguments, builder)
@@ -208,7 +208,7 @@ internal sealed interface UiDefinitionFactory {
208208
return createSupportedPaymentMethod(metadata).asFormHeaderInformation(incentive)
209209
}
210210

211-
fun createFormElements(metadata: PaymentMethodMetadata, arguments: Arguments): List<FormElement>
211+
fun createBaseFormElements(metadata: PaymentMethodMetadata, arguments: Arguments): List<FormElement>
212212
}
213213

214214
fun canBeDisplayedInUi(
@@ -286,29 +286,29 @@ internal sealed interface UiDefinitionFactory {
286286
}
287287

288288
fun formElements(
289-
definition: PaymentMethodDefinition,
289+
paymentMethodCode: String,
290290
metadata: PaymentMethodMetadata,
291291
sharedDataSpecs: List<SharedDataSpec>,
292292
arguments: Arguments,
293293
): List<FormElement>? = when (this) {
294294
is Simple -> {
295-
createFormElements(
295+
createBaseFormElements(
296296
metadata = metadata,
297297
arguments = arguments,
298298
)
299299
}
300300

301301
is Custom -> {
302-
createFormElements(
302+
createBaseFormElements(
303303
metadata = metadata,
304304
arguments = arguments,
305305
)
306306
}
307307

308308
is RequiresSharedDataSpec -> {
309-
val sharedDataSpec = sharedDataSpecs.firstOrNull { it.type == definition.type.code }
309+
val sharedDataSpec = sharedDataSpecs.firstOrNull { it.type == paymentMethodCode }
310310
if (sharedDataSpec != null) {
311-
createFormElements(
311+
createBaseFormElements(
312312
metadata = metadata,
313313
sharedDataSpec = sharedDataSpec,
314314
transformSpecToElements = TransformSpecToElements(arguments),

paymentsheet/src/main/java/com/stripe/android/lpmfoundations/paymentmethod/definitions/BacsDebitDefinition.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ private object BacsDebitUiDefinitionFactory : UiDefinitionFactory.RequiresShared
4747
iconRequiresTinting = true,
4848
)
4949

50-
override fun createFormElements(
50+
override fun createBaseFormElements(
5151
metadata: PaymentMethodMetadata,
5252
sharedDataSpec: SharedDataSpec,
5353
transformSpecToElements: TransformSpecToElements

paymentsheet/src/main/java/com/stripe/android/lpmfoundations/paymentmethod/definitions/CardDefinition.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,8 @@ private object CardUiDefinitionFactory : UiDefinitionFactory.Custom {
115115
)
116116
}
117117

118-
override fun createFormElements(
118+
@Suppress("LongMethod")
119+
override fun createBaseFormElements(
119120
metadata: PaymentMethodMetadata,
120121
arguments: UiDefinitionFactory.Arguments,
121122
): List<FormElement> {

paymentsheet/src/main/java/com/stripe/android/lpmfoundations/paymentmethod/definitions/InstantDebitsDefinition.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ private object InstantDebitsUiDefinitionFactory : UiDefinitionFactory.Custom {
4949
}
5050

5151
// Instant Debits uses its own mechanism, not these form elements.
52-
override fun createFormElements(
52+
override fun createBaseFormElements(
5353
metadata: PaymentMethodMetadata,
5454
arguments: UiDefinitionFactory.Arguments,
5555
): List<FormElement> {

paymentsheet/src/main/java/com/stripe/android/lpmfoundations/paymentmethod/definitions/LinkCardBrandDefinition.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ private object LinkCardBrandDefinitionFactory : UiDefinitionFactory.Custom {
4949
}
5050

5151
// Link Card Brand uses its own mechanism, not these form elements.
52-
override fun createFormElements(
52+
override fun createBaseFormElements(
5353
metadata: PaymentMethodMetadata,
5454
arguments: UiDefinitionFactory.Arguments,
5555
): List<FormElement> {

paymentsheet/src/main/java/com/stripe/android/lpmfoundations/paymentmethod/definitions/UsBankAccountDefinition.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ private object UsBankAccountUiDefinitionFactory : UiDefinitionFactory.Custom {
5858
}
5959

6060
// US Bank Account uses it's own mechanism, not these form elements.
61-
override fun createFormElements(
61+
override fun createBaseFormElements(
6262
metadata: PaymentMethodMetadata,
6363
arguments: UiDefinitionFactory.Arguments,
6464
): List<FormElement> = emptyList()

paymentsheet/src/test/java/com/stripe/android/lpmfoundations/paymentmethod/definitions/CustomPaymentMethodUiDefinitionFactoryTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ internal class CustomPaymentMethodUiDefinitionFactoryTest {
8282
enabled = true,
8383
elements = CustomPaymentMethodUiDefinitionFactory(
8484
displayableCustomPaymentMethod = displayableCustomPaymentMethod,
85-
).createFormElements(
85+
).createBaseFormElements(
8686
metadata = PaymentMethodMetadataFactory.create(),
8787
arguments = TestUiDefinitionFactoryArgumentsFactory.create(
8888
paymentMethodCreateParams = createParams,

0 commit comments

Comments
 (0)