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

Refactor PaymentMethodRowButton to support embedded configurations #9596

Open
wants to merge 8 commits into
base: master
Choose a base branch
from

Conversation

tjclawson-stripe
Copy link
Collaborator

@tjclawson-stripe tjclawson-stripe commented Nov 12, 2024

Summary

Refactor PaymentMethodRowButton to support embedded configurations.
Notes:

  • Row separators will be handled by Embedded Payment Method Layout UI when implemented

Motivation

MOBILESDK-2626

Testing

  • Added tests
  • Modified tests
  • Manually verified

Copy link
Contributor

github-actions bot commented Nov 12, 2024

Diffuse output:

OLD: identity-example-release-base.apk (signature: V1, V2)
NEW: identity-example-release-pr.apk (signature: V1, V2)

          │          compressed          │         uncompressed         
          ├───────────┬───────────┬──────┼───────────┬───────────┬──────
 APK      │ old       │ new       │ diff │ old       │ new       │ diff 
──────────┼───────────┼───────────┼──────┼───────────┼───────────┼──────
      dex │     2 MiB │     2 MiB │  0 B │   4.1 MiB │   4.1 MiB │  0 B 
     arsc │     1 MiB │     1 MiB │  0 B │     1 MiB │     1 MiB │  0 B 
 manifest │   2.3 KiB │   2.3 KiB │  0 B │     8 KiB │     8 KiB │  0 B 
      res │ 301.8 KiB │ 301.8 KiB │  0 B │ 455.5 KiB │ 455.5 KiB │  0 B 
   native │   6.2 MiB │   6.2 MiB │  0 B │  15.8 MiB │  15.8 MiB │  0 B 
    asset │   7.1 KiB │   7.1 KiB │  0 B │   6.9 KiB │   6.9 KiB │  0 B 
    other │  90.2 KiB │  90.2 KiB │ +1 B │ 170.3 KiB │ 170.3 KiB │  0 B 
──────────┼───────────┼───────────┼──────┼───────────┼───────────┼──────
    total │   9.6 MiB │   9.6 MiB │ +1 B │  21.5 MiB │  21.5 MiB │  0 B 

 DEX     │ old   │ new   │ diff      
─────────┼───────┼───────┼───────────
   files │     1 │     1 │ 0         
 strings │ 19966 │ 19966 │ 0 (+0 -0) 
   types │  6188 │  6188 │ 0 (+0 -0) 
 classes │  4979 │  4979 │ 0 (+0 -0) 
 methods │ 29759 │ 29759 │ 0 (+0 -0) 
  fields │ 17526 │ 17526 │ 0 (+0 -0) 

 ARSC    │ old  │ new  │ diff 
─────────┼──────┼──────┼──────
 configs │  164 │  164 │  0   
 entries │ 3622 │ 3622 │  0
APK
   compressed    │  uncompressed   │                        
──────────┬──────┼──────────┬──────┤                        
 size     │ diff │ size     │ diff │ path                   
──────────┼──────┼──────────┼──────┼────────────────────────
 28.4 KiB │ -8 B │ 62.9 KiB │  0 B │ ∆ META-INF/CERT.SF     
 25.3 KiB │ +8 B │ 62.8 KiB │  0 B │ ∆ META-INF/MANIFEST.MF 
  1.2 KiB │ +1 B │  1.2 KiB │  0 B │ ∆ META-INF/CERT.RSA    
──────────┼──────┼──────────┼──────┼────────────────────────
 54.9 KiB │ +1 B │  127 KiB │  0 B │ (total)

Copy link
Collaborator

@jaynewstrom-stripe jaynewstrom-stripe left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should do this a different way (any of these work for me):

  • We should separate the shell from the content in a pure refactor, no new functionality. Just enabling the inner content to be used by some different outer content later on.
  • We should merge in the appearance API first, then make these changes.
    I don't love having half baked code in the repo (TODOs aren't tracked anywhere!).

We also have a lot of opportunity to add screenshot tests here.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These radio buttons look massive. Do they match the spec?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They look equivalent to the ones in the design spec to me. I can make them smaller if desired. Do we have a figma with actual sizing?

@@ -31,47 +50,158 @@ internal fun PaymentMethodRowButton(
subtitle: String?,
onClick: () -> Unit,
contentDescription: String? = null,
modifier: Modifier = Modifier,
modifier: Modifier = Modifier.fillMaxWidth(),
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this move below? It feels like we'd always want this max width, not optionally?

8.dp
} else {
12.dp
Row(
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is the row needed? It looks like we can combine the modifiers with the card.

trailingContent: (@Composable RowScope.() -> Unit)? = null,
) {
Row(
modifier = modifier.selectable(
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like we do this for every variant. Can we move this logic into the RowButtonContent?

}
}

private fun String?.paddingValues(): Dp = if (this != null) 8.dp else 12.dp
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a little deceptive. Maybe a rename to paddingValuesForSubtitle would be better? (there's probably still a better name yet).

isEnabled = false,
isSelected = false,
iconContent = {
Image(
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought we'd have a generic inner content item, and that would be used for all types. This makes it feel like you would have to change 3 places if you wanted to add something new to the inner content.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The spacing here looks wrong.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The designs are quite a bit different in figma.
Screenshot 2024-11-19 at 5 54 26 AM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants