Switches the 2FA challenge to the authenticator app ("Try another way" →
"Authentication app") with the two calls the 448 app makes:
method_picker.navigation.async with selected_method: 'totp'
the two_factor_login.enter_totp_code screen, opened with the screen id
the selection response issued
Needed after the server preselected approve-from-another-device; the code
itself is then submitted with TwoFactorBloksVerifyCode({ challenge: 'totp' }).
The two calls are also exported one by one for a caller that owns the
screen between them (the Android screen opens it in between, so the screen
fetch reports the code-entry endpoint). This composition opens the code-entry
screen itself — it is the single owner of the path that has no screen layer
(iOS, the legacy WhatsApp/SMS flows) — so the code-entry fetch reports the
endpoint that actually ran. The Android screens call the two split steps
instead and emit their own navigation between them.
Switches the 2FA challenge to the authenticator app ("Try another way" → "Authentication app") with the two calls the 448 app makes:
method_picker.navigation.asyncwithselected_method: 'totp'two_factor_login.enter_totp_codescreen, opened with the screen id the selection response issuedNeeded after the server preselected approve-from-another-device; the code itself is then submitted with
TwoFactorBloksVerifyCode({ challenge: 'totp' }).The two calls are also exported one by one for a caller that owns the screen between them (the Android screen opens it in between, so the screen fetch reports the code-entry endpoint). This composition opens the code-entry screen itself — it is the single owner of the path that has no screen layer (iOS, the legacy WhatsApp/SMS flows) — so the code-entry fetch reports the endpoint that actually ran. The Android screens call the two split steps instead and emit their own navigation between them.