Skip to content

CCCT-2879 Show Expired Firebase OTP Codes As No Longer Valid (2.65) - #3961

Merged
conroy-ricketts merged 7 commits into
commcare_2.65from
CCCT-2879-firebase-otp-session-expired-messaging-2.65
Oct 12, 2026
Merged

conroy-ricketts merged 7 commits into
commcare_2.65from
CCCT-2879-firebase-otp-session-expired-messaging-2.65

Conversation

@conroy-ricketts

@conroy-ricketts conroy-ricketts commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

CCCT-2879

Cherry-pick of #3960 into commcare_2.65.

Product Description

When Firebase discards a phone OTP code, the user is told it is no longer valid and offered a new code, not "wrong passcode".

Technical Summary

2.65 already ships the PersonalID dead-code handling (CCCT-2803/2804), and its release notes promise this behavior; without this PR the Firebase path contradicts them.

Safety Assurance

Safety story

What gives confidence

Risks to review

  • Rotation and resend-prompt fixes also apply to PersonalID's out-of-attempts state.

🤖 Generated with Claude Code

conroy-ricketts and others added 6 commits October 8, 2026 15:54
[AI] Told users when a Firebase code is no longer valid and offered a new one right away, instead of reporting a wrong code, without falling back to PersonalID SMS.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
[AI] Kept code entry closed across a configuration change while the code is no longer valid, so a restored Firebase screen can't submit without a verification ID and fall back to PersonalID SMS.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
[AI] Let the resend button size to its label so "Request Code" fits on one line without overlapping the verify button.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
[AI] Hid the "Didn't receive your code? Resend" prompt while the code is no longer valid, since Request Code already offers the next step.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@conroy-ricketts conroy-ricketts self-assigned this Oct 8, 2026
@coderabbitai

coderabbitai Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 15 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: bc423c37-a2e8-4dc3-ba3a-46ace2a09bb2
📥 Commits

Reviewing files that changed from the base of the PR and between 861d0bb and 7f29464.

📒 Files selected for processing (18)
  • RELEASES.md
  • app/res/layout/screen_personalid_phone_verify.xml
  • app/res/values-es/strings.xml
  • app/res/values-fr/strings.xml
  • app/res/values-ha/strings.xml
  • app/res/values-hi/strings.xml
  • app/res/values-lt/strings.xml
  • app/res/values-no/strings.xml
  • app/res/values-pt/strings.xml
  • app/res/values-sw/strings.xml
  • app/res/values-ti/strings.xml
  • app/res/values/strings.xml
  • app/src/org/commcare/fragments/personalId/BasePersonalIdPhoneVerificationFragment.kt
  • app/src/org/commcare/utils/FirebaseAuthService.java
  • app/src/org/commcare/utils/OtpErrorType.java
  • app/unit-tests/src/org/commcare/fragments/personalId/PersonalIdPhoneVerificationFragmentTest.kt
  • app/unit-tests/src/org/commcare/utils/FirebaseAuthServiceTest.kt
  • app/unit-tests/src/org/commcare/utils/OtpAnalyticsMapperTest.kt
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@conroy-ricketts
conroy-ricketts marked this pull request as ready for review October 8, 2026 19:58
@codecov

codecov Bot commented Oct 8, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 37.48%. Comparing base (f4b6c1b) to head (7f29464).
⚠️ Report is 7 commits behind head on commcare_2.65.

Additional details and impacted files
@@                 Coverage Diff                 @@
##             commcare_2.65    #3961      +/-   ##
===================================================
+ Coverage            37.32%   37.48%   +0.16%     
- Complexity            6864     6888      +24     
===================================================
  Files                 1034     1034              
  Lines                61094    61107      +13     
  Branches              7472     7475       +3     
===================================================
+ Hits                 22802    22907     +105     
+ Misses               35637    35543      -94     
- Partials              2655     2657       +2     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

…rebase-otp-session-expired-messaging-2.65

# Conflicts:
#	app/src/org/commcare/fragments/personalId/BasePersonalIdPhoneVerificationFragment.kt
@conroy-ricketts
conroy-ricketts merged commit a9253fb into commcare_2.65 Oct 12, 2026
5 of 7 checks passed
@conroy-ricketts
conroy-ricketts deleted the CCCT-2879-firebase-otp-session-expired-messaging-2.65 branch October 12, 2026 17:55
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