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

akvo / akvo-mis / #635
88%

Build:
DEFAULT BRANCH: main
Ran 20 May 2026 02:29PM UTC
Jobs 1
Files 109
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

20 May 2026 02:22PM UTC coverage: 88.073% (+0.01%) from 88.061%
#635

push

coveralls-python

web-flow
Feature/220 improve expo sqlite in mobile and fix sentry issues (#221)

* [#220] fix(sqlite): Phase 0+1 — fix defineSyncFormSubmissionTask and eliminate close/delete races

Phase 0 — Functional bug:
- background-task.js: defineSyncFormSubmissionTask now opens its own DB connection
  and passes it to syncFormSubmission (was called with undefined, always returned Failed)

Phase 1 — Crash eliminators:
- background-task.js: remove syncFormVersion internal db.closeAsync (ownership violation,
  caused Sentry #7286813050 — NativeStatement.finalizeAsync on closed resource)
- background-task.js: add finally-close to defineSyncFormVersionTask, registerBackgroundTask,
  syncDatapointsBackground (was scattered across early returns and success path only)
- cascades.js: fix dropFiles forEach(async) → reduce (fire-and-forget deletions)
- cascades.js: fix close/delete race — openDatabaseSync → closeSync before deleteAsync
- cascades.js: fix loadDataSource leaked connection — add outer try/finally closeAsync

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

* [#220] fix(sqlite): Phase 2 — replace forEach(async) with awaited reduce

- FormPage.js: refreshForm made async; cascade close converted from
  forEach+closeAsync to reduce+closeSync; all callers now await refreshForm()
- AddUser.js: handleGetAllForms sequential form+cascade fetching via reduce
  with inner Promise.allSettled for concurrent cascade downloads
- AuthForm.js: handleGetAllForms parallel fetch via Promise.allSettled,
  sequential DB write via reduce to prevent overlapping upserts

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

* [#220] fix(sqlite): Phase 3 — await fire-and-forget DB write, catch unhandled rejection

- SettingsForm.js: handleOnSwitch made async; DB write awaited inside try/catch
  with Sentry capture to prevent unhandled rejection crash on switch toggle
- SyncService.js: setInterval onSync() now has .catch(Sentry.captureException)
  to prevent unhandled rejection from crashing the app ... (continued)

4997 of 5827 branches covered (85.76%)

Branch coverage included in aggregate %.

9632 of 10783 relevant lines covered (89.33%)

0.89 hits per line

Jobs
ID Job ID Ran Files Coverage
1 #635.1 20 May 2026 02:29PM UTC 109
88.07
Source Files on build #635
  • Tree
  • List 109
  • Changed 2
  • Source Changed 0
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • 57ce1fa3 on github
  • Prev Build on main
  • Next Build on main
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc