@bobfrankston/rmfmail 1.0.564 → 1.0.567
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/components/message-list.js +19 -2
- package/client/components/message-list.js.map +1 -1
- package/client/components/message-list.ts +17 -2
- package/package.json +5 -5
- package/packages/mailx-imap/index.d.ts +17 -0
- package/packages/mailx-imap/index.d.ts.map +1 -1
- package/packages/mailx-imap/index.js +109 -56
- package/packages/mailx-imap/index.js.map +1 -1
- package/packages/mailx-imap/index.ts +110 -50
- package/packages/mailx-imap/package-lock.json +2 -2
- package/packages/mailx-imap/package.json +1 -1
- package/packages/mailx-store/db.d.ts +80 -5
- package/packages/mailx-store/db.d.ts.map +1 -1
- package/packages/mailx-store/db.js +327 -51
- package/packages/mailx-store/db.js.map +1 -1
- package/packages/mailx-store/db.ts +356 -52
- package/packages/mailx-store/package.json +1 -1
|
@@ -261,6 +261,19 @@ export class ImapManager extends EventEmitter {
|
|
|
261
261
|
this.transportFactory = transportFactory;
|
|
262
262
|
const storePath = getStorePath();
|
|
263
263
|
this.bodyStore = new FileMessageStore(storePath);
|
|
264
|
+
// Cancel pending deferred-delete when move-detect rebinds a row.
|
|
265
|
+
// Without this, the source folder's reconcile-delete grace timer
|
|
266
|
+
// would fire 30 minutes after detection for a row that's already
|
|
267
|
+
// moved elsewhere — the user would see the message vanish.
|
|
268
|
+
this.db.setOnMoveDetected((info) => {
|
|
269
|
+
const key = `${info.accountId}:${info.fromFolderId}:${info.fromUid}`;
|
|
270
|
+
const t = this.deferredDeletes.get(key);
|
|
271
|
+
if (t) {
|
|
272
|
+
clearTimeout(t);
|
|
273
|
+
this.deferredDeletes.delete(key);
|
|
274
|
+
console.log(` [reconcile-cancel] ${info.accountId} ${info.fromFolderId}/${info.fromUid}: deferred delete cancelled (move-detect rebound to ${info.toFolderId}/${info.toUid})`);
|
|
275
|
+
}
|
|
276
|
+
});
|
|
264
277
|
}
|
|
265
278
|
|
|
266
279
|
/** Get OAuth access token for an account (for SMTP auth) */
|
|
@@ -845,7 +858,15 @@ export class ImapManager extends EventEmitter {
|
|
|
845
858
|
const hex = Buffer.from(msg.subject, "utf-8").subarray(0, 40).toString("hex");
|
|
846
859
|
console.log(` [encoding] subject: "${msg.subject.substring(0, 60)}" hex: ${hex}`);
|
|
847
860
|
}
|
|
848
|
-
|
|
861
|
+
// CRITICAL: do NOT skip on `uid <= highestUid`. That check
|
|
862
|
+
// was a major bug — it silently dropped every gap-filled
|
|
863
|
+
// message (gap-fill specifically recovers UIDs in the
|
|
864
|
+
// already-scanned range, all of which are <= highestUid).
|
|
865
|
+
// upsertMessage's UNIQUE(account, folder, uid) constraint
|
|
866
|
+
// already deduplicates: if mailx truly has the row, the
|
|
867
|
+
// upsert turns into an UPDATE (cheap); if it doesn't, the
|
|
868
|
+
// insert proceeds. Trust the constraint — don't second-
|
|
869
|
+
// guess it on a stale highestUid snapshot.
|
|
849
870
|
// Tombstone check: if the user locally deleted this Message-ID,
|
|
850
871
|
// don't re-import it. Server-side EXPUNGE may lag, or reconcile
|
|
851
872
|
// may find the message in an old list snapshot. Without this,
|
|
@@ -910,36 +931,11 @@ export class ImapManager extends EventEmitter {
|
|
|
910
931
|
// high-water mark is the right anchor for incremental fetch.
|
|
911
932
|
const highestUid = this.db.getHighestUid(accountId, folderId);
|
|
912
933
|
|
|
913
|
-
// STATUS-before-SELECT
|
|
914
|
-
//
|
|
915
|
-
//
|
|
916
|
-
//
|
|
917
|
-
//
|
|
918
|
-
// Apply uniformly to every folder — no special-casing.
|
|
919
|
-
try {
|
|
920
|
-
if (typeof (client as any).getStatus === "function") {
|
|
921
|
-
const status = await (client as any).getStatus(folder.path);
|
|
922
|
-
const serverHighest = (status.uidNext || 1) - 1;
|
|
923
|
-
const serverCount = status.messages ?? -1;
|
|
924
|
-
const localCount = this.db.getMessageCount(accountId, folderId);
|
|
925
|
-
const isUpToDate = highestUid > 0
|
|
926
|
-
&& serverHighest <= highestUid
|
|
927
|
-
&& serverCount >= 0
|
|
928
|
-
&& serverCount === localCount;
|
|
929
|
-
if (isUpToDate) {
|
|
930
|
-
console.log(` [sync] ${accountId}/${folder.path}: STATUS up-to-date (uidNext=${status.uidNext}, server=${serverCount}, local=${localCount}) — skipping SELECT`);
|
|
931
|
-
this.emit("syncProgress", accountId, `sync:${folder.path}`, 100);
|
|
932
|
-
return 0;
|
|
933
|
-
}
|
|
934
|
-
console.log(` [sync] ${accountId}/${folder.path}: STATUS uidNext=${status.uidNext} server=${serverCount} local=${localCount} highestUid=${highestUid} — needs SELECT`);
|
|
935
|
-
}
|
|
936
|
-
} catch (e: any) {
|
|
937
|
-
// STATUS shouldn't fail, but don't make it load-bearing — fall
|
|
938
|
-
// through to the SELECT path on any error and let that path's
|
|
939
|
-
// existing handling deal with it.
|
|
940
|
-
console.log(` [sync] ${accountId}/${folder.path}: STATUS failed (${e?.message || e}) — falling through to SELECT`);
|
|
941
|
-
}
|
|
942
|
-
|
|
934
|
+
// STATUS-before-SELECT was here. Removed — added a round-trip per
|
|
935
|
+
// folder with no measured benefit on Bob's link, and the speculative
|
|
936
|
+
// "skip SELECT when nothing changed" optimization didn't actually
|
|
937
|
+
// skip anything in practice (server count vs local count nearly
|
|
938
|
+
// always differs slightly because of in-flight deletes/moves).
|
|
943
939
|
console.log(` [sync] ${accountId}/${folder.path}: highestUid=${highestUid}, fetching...`);
|
|
944
940
|
|
|
945
941
|
let messages: any[];
|
|
@@ -1059,17 +1055,14 @@ export class ImapManager extends EventEmitter {
|
|
|
1059
1055
|
for (let i = batchStart; i < batchEnd; i++) {
|
|
1060
1056
|
const msg = messages[i];
|
|
1061
1057
|
|
|
1062
|
-
//
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
this.db.updateMessageFlags(accountId, msg.uid, flags);
|
|
1071
|
-
continue;
|
|
1072
|
-
}
|
|
1058
|
+
// CRITICAL: was `if (msg.uid <= highestUid) { update flags; continue }`.
|
|
1059
|
+
// Same bug as the streamy storeMessages path on line ~861:
|
|
1060
|
+
// it dropped every gap-fill message because gap-fills
|
|
1061
|
+
// recover UIDs in the already-scanned range (all <=
|
|
1062
|
+
// highestUid by definition). Trust upsertMessage's
|
|
1063
|
+
// UNIQUE constraint to dedupe — if mailx truly has the
|
|
1064
|
+
// row, the upsert becomes an UPDATE that refreshes
|
|
1065
|
+
// flags too, all in one path.
|
|
1073
1066
|
|
|
1074
1067
|
// Tombstone check — same reason as the streamy onChunk path
|
|
1075
1068
|
// at storeMessages: a locally-deleted message that the server
|
|
@@ -1165,16 +1158,25 @@ export class ImapManager extends EventEmitter {
|
|
|
1165
1158
|
console.log(` [sync] ${accountId}/${folder.path}: reconcile skipped — server UID list empty but local has ${localUids.length} (treating as transient)`);
|
|
1166
1159
|
} else if (localUids.length > 0 && toDelete.length / localUids.length > 0.5) {
|
|
1167
1160
|
console.log(` [sync] ${accountId}/${folder.path}: reconcile REFUSED — would delete ${toDelete.length}/${localUids.length} (${Math.round(toDelete.length / localUids.length * 100)}%) — probably a sync bug, skipping`);
|
|
1168
|
-
} else {
|
|
1161
|
+
} else if (toDelete.length > 0) {
|
|
1162
|
+
// DEFERRED DELETE — DO NOT delete immediately. Server-side
|
|
1163
|
+
// moves (Sieve filters, IMAP MOVE from another client)
|
|
1164
|
+
// make a UID disappear from the source folder before
|
|
1165
|
+
// showing up in the destination. mailx syncs folders
|
|
1166
|
+
// sequentially; if we delete on first detection, the
|
|
1167
|
+
// dest's `upsertMessage`-side move-detect can't rebind
|
|
1168
|
+
// (the row is gone), and we lose the UUID + body cache,
|
|
1169
|
+
// forcing a re-fetch from server.
|
|
1170
|
+
//
|
|
1171
|
+
// Instead: schedule the delete 60s out. If between now
|
|
1172
|
+
// and then move-detect rebinds the row (folder_id changes
|
|
1173
|
+
// to dest), the (acc, folder, uid) lookup at fire time
|
|
1174
|
+
// won't match — skip. If still at original (truly gone
|
|
1175
|
+
// from server, not just moved), commit the delete.
|
|
1169
1176
|
for (const uid of toDelete) {
|
|
1170
|
-
|
|
1171
|
-
const tag = env ? `msgid=${env.messageId || "?"} subj="${(env.subject || "").slice(0, 60)}"` : "unknown";
|
|
1172
|
-
console.log(` [reconcile-delete] ${accountId}/${folder.path} uid=${uid} ${tag}`);
|
|
1173
|
-
this.unlinkBodyFile(accountId, uid, folderId).catch(() => {});
|
|
1174
|
-
this.db.deleteMessage(accountId, uid, "reconcile: server returned UID list without this row", `mailx-imap syncFolder reconcile (${folder.path})`);
|
|
1175
|
-
deletedCount++;
|
|
1177
|
+
this.scheduleDeferredReconcileDelete(accountId, folderId, uid, folder.path);
|
|
1176
1178
|
}
|
|
1177
|
-
|
|
1179
|
+
console.log(` [reconcile-defer] ${accountId}/${folder.path}: scheduled ${toDelete.length} deletes (60s grace for move-detect)`);
|
|
1178
1180
|
}
|
|
1179
1181
|
} catch (e: any) {
|
|
1180
1182
|
console.error(` deletion sync error: ${e.message}`);
|
|
@@ -1971,6 +1973,64 @@ export class ImapManager extends EventEmitter {
|
|
|
1971
1973
|
/** Unlink the on-disk body file for a message by reading its `body_path`
|
|
1972
1974
|
* from the DB. Safe to call either before or after `db.deleteMessage`
|
|
1973
1975
|
* — read body_path first, store it, then unlink whenever. */
|
|
1976
|
+
/** Per-(account, folder, uid) deferred-delete timer. Reconcile populates
|
|
1977
|
+
* this; the timer fires 60s later and re-checks whether the row at that
|
|
1978
|
+
* exact (folder, uid) still exists. If yes → really delete (server
|
|
1979
|
+
* expunged it). If no → skip (move-detect rebound it elsewhere; the
|
|
1980
|
+
* row already moved to a new folder/uid in the same DB row, so the
|
|
1981
|
+
* original key no longer matches anything). Net effect: server-side
|
|
1982
|
+
* moves preserve UUID + body cache + flags. */
|
|
1983
|
+
private deferredDeletes = new Map<string, ReturnType<typeof setTimeout>>();
|
|
1984
|
+
/** Grace window for reconcile-delete. Set to 30 minutes because the
|
|
1985
|
+
* full-folder sync loop walks ~96 folders sequentially and each one
|
|
1986
|
+
* takes 1-30 seconds; a server-side move from INBOX to a folder that
|
|
1987
|
+
* syncs late (alphabetically far from INBOX) can take 10+ minutes
|
|
1988
|
+
* before move-detect fires in the destination. 60s was way too short
|
|
1989
|
+
* in production — the grace expired and rows were committed-deleted
|
|
1990
|
+
* before _Spam / Sent / archive folders had a chance to rebind. */
|
|
1991
|
+
private static readonly RECONCILE_DELETE_GRACE_MS = 30 * 60_000;
|
|
1992
|
+
|
|
1993
|
+
private scheduleDeferredReconcileDelete(accountId: string, folderId: number, uid: number, folderPath: string): void {
|
|
1994
|
+
const key = `${accountId}:${folderId}:${uid}`;
|
|
1995
|
+
// If already pending, don't reset — the grace clock runs from the
|
|
1996
|
+
// FIRST detection so a flapping server can't keep deferring.
|
|
1997
|
+
if (this.deferredDeletes.has(key)) return;
|
|
1998
|
+
const t = setTimeout(() => {
|
|
1999
|
+
this.deferredDeletes.delete(key);
|
|
2000
|
+
// NEW SEMANTICS (post-message_folders refactor): we drop the
|
|
2001
|
+
// FOLDER MEMBERSHIP, not the messages row. The message itself
|
|
2002
|
+
// may exist in other folders (Gmail labels, server-side moves
|
|
2003
|
+
// already reconciled by the dest folder's sync); deleting the
|
|
2004
|
+
// messages row would clobber those.
|
|
2005
|
+
//
|
|
2006
|
+
// 1. Delete from message_folders for THIS (folder, uid).
|
|
2007
|
+
// 2. Look up if the messages row has any other memberships.
|
|
2008
|
+
// If yes — message lives elsewhere; just drop our row's
|
|
2009
|
+
// body-cache reference if it was tied to this location.
|
|
2010
|
+
// If no — message is truly orphaned; delete the messages
|
|
2011
|
+
// row + unlink body file.
|
|
2012
|
+
const ds = (this.db as any).dropFolderMembership?.(accountId, folderId, uid, folderPath);
|
|
2013
|
+
// Fall back to the legacy path if the new method isn't there
|
|
2014
|
+
// for some reason (defensive — shouldn't happen, but the same
|
|
2015
|
+
// call site is hit by Gmail-API reconcile too which I haven't
|
|
2016
|
+
// converted yet).
|
|
2017
|
+
if (!ds) {
|
|
2018
|
+
const env: any = this.db.getMessageByUid(accountId, uid, folderId);
|
|
2019
|
+
if (!env || env.folderId !== folderId) {
|
|
2020
|
+
console.log(` [reconcile-skip] ${accountId}/${folderPath} uid=${uid}: row moved during grace window`);
|
|
2021
|
+
return;
|
|
2022
|
+
}
|
|
2023
|
+
const tag = env.messageId ? `msgid=${env.messageId} subj="${(env.subject || "").slice(0, 60)}"` : "no-msgid";
|
|
2024
|
+
console.log(` [reconcile-delete] ${accountId}/${folderPath} uid=${uid} ${tag} (legacy path)`);
|
|
2025
|
+
this.unlinkBodyFile(accountId, uid, folderId).catch(() => {});
|
|
2026
|
+
this.db.deleteMessage(accountId, uid, "reconcile: server missing this UID after grace (legacy)", `mailx-imap deferred reconcile (${folderPath})`);
|
|
2027
|
+
}
|
|
2028
|
+
this.db.recalcFolderCounts(folderId);
|
|
2029
|
+
this.emit("folderCountsChanged", accountId, {});
|
|
2030
|
+
}, ImapManager.RECONCILE_DELETE_GRACE_MS);
|
|
2031
|
+
this.deferredDeletes.set(key, t);
|
|
2032
|
+
}
|
|
2033
|
+
|
|
1974
2034
|
private async unlinkBodyFile(accountId: string, uid: number, folderId?: number): Promise<void> {
|
|
1975
2035
|
try {
|
|
1976
2036
|
const row: any = this.db.getMessageByUid(accountId, uid, folderId);
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bobfrankston/mailx-imap",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.28",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@bobfrankston/mailx-imap",
|
|
9
|
-
"version": "0.1.
|
|
9
|
+
"version": "0.1.28",
|
|
10
10
|
"license": "ISC",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@bobfrankston/iflow-direct": "^0.1.27",
|
|
@@ -165,12 +165,45 @@ export declare class MailxDB {
|
|
|
165
165
|
deleteFolder(folderId: number): void;
|
|
166
166
|
markFolderRead(folderId: number): void;
|
|
167
167
|
deleteAllMessages(accountId: string, folderId: number): void;
|
|
168
|
+
/** Drop every `message_folders` row in `folderId` (optionally scoped to an
|
|
169
|
+
* account) and GC any `messages` rows that no longer have ANY memberships.
|
|
170
|
+
* Returns count of memberships removed (so callers can audit "I deleted N
|
|
171
|
+
* things"). The messages-row delete cascades to FTS / sync_actions /
|
|
172
|
+
* message_folders (CASCADE) so this is the safe single op for "clear
|
|
173
|
+
* this folder" without nuking multi-folder messages. */
|
|
174
|
+
private gcMembershipsAndCollectOrphans;
|
|
168
175
|
updateFolderCounts(folderId: number, total: number, unread: number): void;
|
|
169
176
|
updateFolderSync(folderId: number, uidvalidity: number, highestModseq: string): void;
|
|
170
177
|
getFolderSync(folderId: number): {
|
|
171
178
|
uidvalidity: number;
|
|
172
179
|
highestModseq: string;
|
|
173
180
|
};
|
|
181
|
+
/** Record that a message row currently lives at (folder, uid). Idempotent
|
|
182
|
+
* via UNIQUE(folder_id, uid) — re-inserting the same membership just
|
|
183
|
+
* refreshes last_seen_at. A message in N Gmail labels has N rows.
|
|
184
|
+
* A server-side move is "delete one membership row, insert another";
|
|
185
|
+
* the messages row is untouched. Called from upsertMessage on every
|
|
186
|
+
* insert / move-detect / existing-row upsert during the additive
|
|
187
|
+
* migration. Reconcile is the only path that DELETES from this table
|
|
188
|
+
* (when the server stops listing a UID in a folder). */
|
|
189
|
+
upsertMessageFolder(messageRowId: number, folderId: number, uid: number): void;
|
|
190
|
+
/** Drop a membership row when reconcile finds the UID is no longer
|
|
191
|
+
* on the server in this folder. The messages row itself is NOT
|
|
192
|
+
* touched — it may still exist in other folders, or the deferred-
|
|
193
|
+
* cleanup pass (later) handles orphan messages with no memberships. */
|
|
194
|
+
removeMessageFolder(folderId: number, uid: number): boolean;
|
|
195
|
+
/** Reconcile-driven membership drop. Called when the server's UID list
|
|
196
|
+
* for a folder no longer contains a UID we have locally. Drops the
|
|
197
|
+
* membership row; if the messages row has no other memberships AND
|
|
198
|
+
* no other folder claims it via the legacy folder_id column, deletes
|
|
199
|
+
* the messages row + unlinks the body file. Returns true if any
|
|
200
|
+
* cleanup happened (so the caller can skip the legacy delete path).
|
|
201
|
+
*
|
|
202
|
+
* During the additive migration we ALSO have to handle the legacy
|
|
203
|
+
* case where the row's folder_id matches but no message_folders row
|
|
204
|
+
* was migrated for it (race during initial population, etc.) — we
|
|
205
|
+
* fall back to the messages.folder_id check to clean up consistently. */
|
|
206
|
+
dropFolderMembership(accountId: string, folderId: number, uid: number, folderPath?: string): boolean;
|
|
174
207
|
upsertMessage(msg: {
|
|
175
208
|
accountId: string;
|
|
176
209
|
folderId: number;
|
|
@@ -190,6 +223,12 @@ export declare class MailxDB {
|
|
|
190
223
|
bodyPath: string;
|
|
191
224
|
providerId?: string;
|
|
192
225
|
}): number;
|
|
226
|
+
/** List view: messages currently in (account, folder).
|
|
227
|
+
* Joins through `message_folders` so the UID + folder location come
|
|
228
|
+
* from membership rows, not from the legacy messages.folder_id /
|
|
229
|
+
* messages.uid columns. After a server-side move (Sieve filter,
|
|
230
|
+
* webmail action, etc.), the membership row is the truth — the
|
|
231
|
+
* legacy columns are frozen at first-sight values. */
|
|
193
232
|
getMessages(query: MessageQuery): PagedResult<MessageEnvelope>;
|
|
194
233
|
/** Unified inbox: all inbox folders across accounts, sorted by date, paginated in SQL */
|
|
195
234
|
getUnifiedInbox(page?: number, pageSize?: number): PagedResult<MessageEnvelope>;
|
|
@@ -197,6 +236,12 @@ export declare class MailxDB {
|
|
|
197
236
|
* identity) and `bodyPath` (authoritative on-disk location) in addition
|
|
198
237
|
* to the server-binding metadata. */
|
|
199
238
|
private rowToEnvelope;
|
|
239
|
+
/** Look up a message by (account, uid) and optionally folder.
|
|
240
|
+
* Joins through `message_folders` so the message is found at its
|
|
241
|
+
* CURRENT location, not whatever messages.folder_id was at first
|
|
242
|
+
* sight. After server-side moves, that's the difference between
|
|
243
|
+
* hitting the message in `_Spam` (correct) and hitting nothing
|
|
244
|
+
* because the legacy messages.folder_id still points at INBOX. */
|
|
200
245
|
getMessageByUid(accountId: string, uid: number, folderId?: number): MessageEnvelope;
|
|
201
246
|
/** Look up a message by its stable local UUID. Returned envelope includes
|
|
202
247
|
* the current (folder_id, uid) — these may have changed since the UUID
|
|
@@ -213,11 +258,25 @@ export declare class MailxDB {
|
|
|
213
258
|
uid: number;
|
|
214
259
|
folderId: number;
|
|
215
260
|
}[];
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
261
|
+
/** Highest server UID we've seen in this folder. After the
|
|
262
|
+
* message_folders refactor, this reads from the membership table
|
|
263
|
+
* rather than messages.uid — a server-side move from this folder
|
|
264
|
+
* drops the membership row, so the high-water mark correctly
|
|
265
|
+
* decreases when the message left. account_id is implicit
|
|
266
|
+
* (folder_id is account-scoped). */
|
|
267
|
+
getHighestUid(_accountId: string, folderId: number): number;
|
|
268
|
+
/** Oldest message date in this folder. Joins through message_folders
|
|
269
|
+
* so a message that LEFT this folder via server-side move stops
|
|
270
|
+
* influencing the date window for incremental backfill. */
|
|
271
|
+
getOldestDate(_accountId: string, folderId: number): number;
|
|
272
|
+
/** Number of messages currently IN this folder (server-side membership,
|
|
273
|
+
* not whatever messages.folder_id happens to say after a move). */
|
|
274
|
+
getMessageCount(_accountId: string, folderId: number): number;
|
|
275
|
+
/** All UIDs the server has confirmed in this folder. Used by
|
|
276
|
+
* reconcile to diff against the server's UID list — anything in
|
|
277
|
+
* here but NOT on the server gets its membership dropped (which
|
|
278
|
+
* may then GC the messages row if it has no other folders). */
|
|
279
|
+
getUidsForFolder(_accountId: string, folderId: number): number[];
|
|
221
280
|
/** Delete a message by account + UID. Reason is propagated into the
|
|
222
281
|
* audit_log so the DB carries an authoritative trail of every removal. */
|
|
223
282
|
deleteMessage(accountId: string, uid: number, reason?: string, source?: string): void;
|
|
@@ -253,6 +312,22 @@ export declare class MailxDB {
|
|
|
253
312
|
private _onContactsChanged?;
|
|
254
313
|
setOnContactsChanged(cb: () => void): void;
|
|
255
314
|
private notifyContactsChanged;
|
|
315
|
+
/** Fired when upsertMessage detects a server-side move (Message-ID match
|
|
316
|
+
* in another folder rebinds the existing row to the destination). The
|
|
317
|
+
* reconciler can listen and cancel any pending deferred-delete for the
|
|
318
|
+
* original (folder, uid), so the move propagates without the source
|
|
319
|
+
* folder's reconcile-delete firing 30 minutes later for a row that's
|
|
320
|
+
* been rebound elsewhere. */
|
|
321
|
+
private _onMoveDetected?;
|
|
322
|
+
setOnMoveDetected(cb: (info: {
|
|
323
|
+
accountId: string;
|
|
324
|
+
messageId: string;
|
|
325
|
+
fromFolderId: number;
|
|
326
|
+
fromUid: number;
|
|
327
|
+
toFolderId: number;
|
|
328
|
+
toUid: number;
|
|
329
|
+
rowId: number;
|
|
330
|
+
}) => void): void;
|
|
256
331
|
/** Seed `discovered`-tier contacts from every address that appears in
|
|
257
332
|
* any cached message — From / To / Cc / Bcc across all folders. One row
|
|
258
333
|
* per email; first non-empty name observed wins. Sent-folder rows skip
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["db.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["db.ts"],"names":[],"mappings":"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"}
|