handoff fixes
This commit is contained in:
parent
8d5e9712a6
commit
83f0eba64d
1 changed files with 23 additions and 9 deletions
|
|
@ -48,15 +48,29 @@ class ExternalReplyPlan:
|
||||||
|
|
||||||
|
|
||||||
def internet_message_id_of(message: dict) -> str | None:
|
def internet_message_id_of(message: dict) -> str | None:
|
||||||
stored = canonical_message_id(
|
return internet_message_id_of_message(message)
|
||||||
message.get("internet_message_id") or message.get("message_id")
|
|
||||||
)
|
|
||||||
raw_header = (message.get("raw_headers") or {}).get("message_id")
|
async def resolve_internet_message_id(database, message: dict) -> str | None:
|
||||||
raw_canonical = canonical_message_id(raw_header)
|
"""Resolve parent Message-ID, recovering Gmail case from stored raw MIME when needed."""
|
||||||
if raw_canonical and stored:
|
resolved = internet_message_id_of_message(message)
|
||||||
if folded_message_id(raw_canonical) == folded_message_id(stored):
|
if resolved:
|
||||||
return raw_canonical
|
return resolved
|
||||||
return stored or raw_canonical
|
|
||||||
|
raw_mime = message.get("raw_mime")
|
||||||
|
if not raw_mime:
|
||||||
|
return None
|
||||||
|
|
||||||
|
try:
|
||||||
|
raw = await get_raw_mime_storage().get(raw_mime)
|
||||||
|
parsed = parse_mime(raw)
|
||||||
|
return first_message_id(parsed.get("message_id"))
|
||||||
|
except Exception:
|
||||||
|
logger.exception(
|
||||||
|
"failed_to_resolve_message_id_from_raw_mime message_id=%s",
|
||||||
|
message.get("_id"),
|
||||||
|
)
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
async def resolve_external_reply_parent(
|
async def resolve_external_reply_parent(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue