mirror of
https://github.com/bulwarkmail/native.git
synced 2026-11-01 00:07:01 +00:00
Opening a folder, searching or loading more took three sequential round trips: `Email/query`, then `Email/get` of its ids, then a `Thread/get` the list screen fired after rendering to size the conversation badges. - `queryEmailPage` sends all three in one request, chaining `Email/get` to the query's `/ids` and `Thread/get` to the fetched messages' `/list/*/threadId` (left out while threading is off). The page is capped at `maxObjectsInGet` so the chained get can't be refused, and a failed `Thread/get` keeps the page. - The full refresh, search and load-more use it; load-more no longer needs its own chunked `Email/get`. - The thread sizes now live in the email store (`threadCounts`, cleared on folder or account change) and the list screen reads them instead of fetching them itself. Rows restored from a snapshot or added by an incremental refresh get theirs with one `Thread/get` after the refresh. - The chained `Email/get` also reports the Email state for an empty folder, so that list gets its own `Email/changes` baseline.