• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

akvo / akvo-mis / #720
89%

Build:
DEFAULT BRANCH: main
Ran 12 Jul 2026 11:56PM UTC
Jobs 1
Files 110
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

12 Jul 2026 11:48PM UTC coverage: 88.432% (-0.01%) from 88.443%
#720

push

coveralls-python

web-flow
#255: Submitted Datapoint Lifecycle & Sync Idempotency (APP-255) (#257)

* [#254] Add dismissible "Later" action to the app update dialog

The update dialog on Home was unconditionally blocking: the backdrop was a
no-op, the Android back button was swallowed by a BackHandler, and "Update"
was the only action. A field worker who was online but could not install the
APK right then was locked out of data collection entirely.

- Add a "Later" button that closes the dialog and suppresses the automatic
  check for 24 hours, persisted across restarts
- Route hardware back and backdrop press through the same handler; RNEUI's
  Dialog does not self-close on back, so simply unblocking it would have
  navigated away with the dialog still mounted
- Check the skip window before calling /apk/version/:appVersion, so a
  dismissed user spends no bandwidth on a metered connection
- Gate the window on the silent path only: the manual check in About always
  reports its result
- Close the dialog before persisting; a failed write reports to Sentry rather
  than re-trapping the user in the dialog this change exists to remove

Storage is a new nullable config.updateSkippedUntil column (migration 07,
DATABASE_VERSION 6 -> 7) rather than expo-secure-store or AsyncStorage. Both
are native modules that would gate this branch behind a fresh EAS build;
expo-sqlite is already open app-wide and config already holds device
preferences of the same kind.

Design and decision log: doc/design/APP-254-dismissible-update-dialog.md

No automated tests: app/__mocks__/expo-sqlite.js still mocks the pre-SDK-53
openDatabase().transaction API and exports no useSQLiteContext, so a hook test
would exercise the mocks rather than the hook. Refreshing those fixtures is
tracked as a follow-up in the design doc.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* [#254] Make update dialog dismissible only via "Later" button

Change the up... (continued)

5669 of 6577 branches covered (86.19%)

Branch coverage included in aggregate %.

10682 of 11913 relevant lines covered (89.67%)

0.9 hits per line

Coverage Regressions

Lines Coverage ∆ File
30
92.04
-0.69% api/v1/v1_data/serializers.py
8
92.4
0.03% api/v1/v1_mobile/serializers.py
8
95.32
0.05% api/v1/v1_mobile/views.py
6
95.17
0.02% api/v1/v1_data/models.py
2
94.53
-0.5% utils/custom_generator.py
Jobs
ID Job ID Ran Files Coverage
1 #720.1 12 Jul 2026 11:56PM UTC 110
88.43
Source Files on build #720
  • Tree
  • List 110
  • Changed 6
  • Source Changed 0
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • c1073e3c on github
  • Prev Build on main
  • Next Build on main
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc