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:
|
||||
stored = canonical_message_id(
|
||||
message.get("internet_message_id") or message.get("message_id")
|
||||
return internet_message_id_of_message(message)
|
||||
|
||||
|
||||
async def resolve_internet_message_id(database, message: dict) -> str | None:
|
||||
"""Resolve parent Message-ID, recovering Gmail case from stored raw MIME when needed."""
|
||||
resolved = internet_message_id_of_message(message)
|
||||
if resolved:
|
||||
return resolved
|
||||
|
||||
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"),
|
||||
)
|
||||
raw_header = (message.get("raw_headers") or {}).get("message_id")
|
||||
raw_canonical = canonical_message_id(raw_header)
|
||||
if raw_canonical and stored:
|
||||
if folded_message_id(raw_canonical) == folded_message_id(stored):
|
||||
return raw_canonical
|
||||
return stored or raw_canonical
|
||||
return None
|
||||
|
||||
|
||||
async def resolve_external_reply_parent(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue