diff options
| author | Danilo M. <danix@danix.xyz> | 2026-08-18 12:12:49 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-08-18 12:12:49 +0200 |
| commit | ec8c2d7492b479846270f702541a26be5643a376 (patch) | |
| tree | f743e215e177a9c5dfb49394a6d9bdcaa1dd498b /src/mailsync.h | |
| parent | a089820aba3bc51884ad880b9e3cf689eda7361d (diff) | |
| download | qtmaildir-ec8c2d7492b479846270f702541a26be5643a376.tar.gz qtmaildir-ec8c2d7492b479846270f702541a26be5643a376.zip | |
feat(worker): resolve whole threads to their messages, ids and paths
Delete thread MOVES every message now, and a move needs message ids and
file paths that the UI does not hold: a thread the user never expanded has
no nodes in the model for its replies, so those live only in the database.
resolveThreadMessages() answers with both, in one combined query, for the
same reason applyTagsToThreads() resolves threads here rather than in the
UI: a query per thread reopens the same Xapian cursor once per selected
row.
Paths come back RELATIVE to the database root, matching
ThreadSummary::firstMessagePath, because the UI knows accounts only by
their maildir, itself a database-relative prefix. Without them the caller
would know which messages to move and not where any of them belongs.
Tags come back too, because Restore reads a message's `deleted-from:` tag
to decide where to send it and an unexpanded thread's messages have no node
to read tags from.
They are joined by a TAB, not a space. A notmuch tag may absolutely contain
a space: the folder "Inbox/SlackBuilds users" produces
`deleted-from:Inbox/SlackBuilds users`, and splitting that on spaces
truncated the folder to "Inbox/SlackBuilds". Restore then moved the
messages into a folder of that name, CREATING it, so real messages ended up
in a directory mbsync does not sync and read as missing. Under `Create
Both` that folder can propagate to the mail server. A tab cannot appear in
a tag, since notmuch's own dump format is line-based and
whitespace-delimited.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'src/mailsync.h')
0 files changed, 0 insertions, 0 deletions
