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

Support 2fa in LinkActivityViewModel #10040

Merged
merged 3 commits into from
Jan 31, 2025
Merged

Support 2fa in LinkActivityViewModel #10040

merged 3 commits into from
Jan 31, 2025

Conversation

toluo-stripe
Copy link
Contributor

@toluo-stripe toluo-stripe commented Jan 30, 2025

Summary

Updates to LinkActivityViewModel with states that render [loading, verification, fullscreen] flows

Motivation

JIRA

Testing

  • Added tests
  • Modified tests
  • Manually verified

Screen Recording

Screen.Recording.2025-01-30.at.6.49.15.PM.mov

Changelog

Copy link
Contributor

github-actions bot commented Jan 30, 2025

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 │ 302.6 KiB │ 302.6 KiB │  0 B │ 456.7 KiB │ 456.7 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.4 KiB │  90.4 KiB │ +7 B │ 170.7 KiB │ 170.7 KiB │  0 B 
──────────┼───────────┼───────────┼──────┼───────────┼───────────┼──────
    total │   9.6 MiB │   9.6 MiB │ +7 B │  21.5 MiB │  21.5 MiB │  0 B 

 DEX     │ old   │ new   │ diff      
─────────┼───────┼───────┼───────────
   files │     1 │     1 │ 0         
 strings │ 19975 │ 19975 │ 0 (+0 -0) 
   types │  6193 │  6193 │ 0 (+0 -0) 
 classes │  4985 │  4985 │ 0 (+0 -0) 
 methods │ 29820 │ 29820 │ 0 (+0 -0) 
  fields │ 17538 │ 17538 │ 0 (+0 -0) 

 ARSC    │ old  │ new  │ diff 
─────────┼──────┼──────┼──────
 configs │  164 │  164 │  0   
 entries │ 3624 │ 3624 │  0
APK
   compressed    │  uncompressed   │                     
──────────┬──────┼──────────┬──────┤                     
 size     │ diff │ size     │ diff │ path                
──────────┼──────┼──────────┼──────┼─────────────────────
 28.5 KiB │ +9 B │ 63.1 KiB │  0 B │ ∆ META-INF/CERT.SF  
  1.2 KiB │ -2 B │  1.2 KiB │  0 B │ ∆ META-INF/CERT.RSA 
──────────┼──────┼──────────┼──────┼─────────────────────
 29.7 KiB │ +7 B │ 64.3 KiB │  0 B │ (total)

Comment on lines 182 to 198
val linkAccount = linkAccountManager.linkAccount.value
val accountStatus = linkAccountManager.accountStatus.first()
when (accountStatus) {
AccountStatus.Verified,
AccountStatus.SignedOut,
AccountStatus.Error -> {
_linkScreenState.value = ScreenState.Link
}
AccountStatus.NeedsVerification,
AccountStatus.VerificationStarted -> {
if (linkAccount != null && startWithVerificationDialog) {
_linkScreenState.value = ScreenState.VerificationDialog(linkAccount)
} else {
_linkScreenState.value = ScreenState.Link
}
}
}
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This will determine whether we render the 2fa dialog or the default link flow

Comment on lines +149 to +153
fun linkScreenScreenCreated() {
viewModelScope.launch {
navigateToLinkScreen()
}
}
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This will be called from the UI when the default link flow is presented. It will navigate to the correct screen. Navigating early causes issues when the nav graph isn't registered yet. This is an example from the proof of concept PR

@toluo-stripe toluo-stripe marked this pull request as ready for review January 30, 2025 22:27
@toluo-stripe toluo-stripe requested review from a team as code owners January 30, 2025 22:27
amk-stripe
amk-stripe previously approved these changes Jan 30, 2025
.build()
.viewModel
}
}
}
}

internal sealed interface ScreenState {
data class VerificationDialog(val linkAccount: LinkAccount) : ScreenState
data object Link : ScreenState
Copy link
Collaborator

Choose a reason for hiding this comment

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

it might be useful to call Link here something like FullScreen instead. Since this is all Link, the current naming is a bit vague.

No need to address now -- feedback for a future improvement here

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I agree. I'll update when I add the remaining components

@toluo-stripe toluo-stripe merged commit 7d2ffa6 into master Jan 31, 2025
13 checks passed
@toluo-stripe toluo-stripe deleted the tolu/link/2fa_vm branch January 31, 2025 01:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants