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

[Prototype] Confirmation definition injection #9665

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

samer-stripe
Copy link
Collaborator

Summary

This is a prototype of the confirmation flow with injectable definition components. This is not intended to be merged as there are no tests but provides an overview of what confirmation architecture will look like in the near future.

Motivation

Wanted to validate the design for the confirmation flow discussed with the team.

Copy link
Contributor

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 │ -12 B │ 170.3 KiB │ 170.3 KiB │  0 B 
──────────┼───────────┼───────────┼───────┼───────────┼───────────┼──────
    total │   9.6 MiB │   9.6 MiB │ -12 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 │  -7 B │ 62.9 KiB │  0 B │ ∆ META-INF/CERT.SF     
 25.3 KiB │  -6 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 │ -12 B │  127 KiB │  0 B │ (total)

import dagger.multibindings.IntoSet

@Module
internal class BacsConfirmationModule {
Copy link
Collaborator

Choose a reason for hiding this comment

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

What do you think about nesting this class in the definition?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Yeah I think that's fair!

@@ -197,13 +197,21 @@ internal interface ConfirmationHandler {
}
}

sealed interface Option : Parcelable {
sealed class Option(val confirmationType: Type) : Parcelable {
Copy link
Collaborator

Choose a reason for hiding this comment

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

To be honest, all of these should probably be decentralized. Happy to punt that until later though.

Ideally it would be nice to not need to add something centrally, or have one know about another.

Copy link
Collaborator Author

@samer-stripe samer-stripe Nov 19, 2024

Choose a reason for hiding this comment

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

Ah yeah I think that's fair actually. Can just have the options implemented for each definition if needed.

confirmationOption: ConfirmationHandler.Option,
intent: StripeIntent,
): Boolean {
return definition.option(confirmationOption)?.let {
Copy link
Collaborator

Choose a reason for hiding this comment

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

what does definition.option do?

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