Source code for redditwarp.model_loaders.modmail_ASYNC


from __future__ import annotations
from typing import TYPE_CHECKING, Mapping, Any, Optional, MutableSequence
if TYPE_CHECKING:
    from ..client_ASYNC import Client

from ..models.modmail_ASYNC import (
    ConversationInfo,
    Message,
    ModAction,
    UserDossier,
    ConversationAggregate,
)

[docs]def load_conversation_info(d: Mapping[str, Any], client: Client) -> ConversationInfo: return ConversationInfo(d, client)
[docs]def load_message(d: Mapping[str, Any], client: Client) -> Message: return Message(d, client)
[docs]def load_mod_action(d: Mapping[str, Any]) -> ModAction: return ModAction(d)
[docs]def load_user_dossier(d: Mapping[str, Any]) -> UserDossier: return UserDossier(d)
[docs]def load_conversation_aggregate( data: Mapping[str, Any], *, client: Client, ) -> ConversationAggregate: conversation_data: Mapping[str, Any] = data['conversation'] messages_mapping_data: Mapping[str, Any] = data['messages'] actions_mapping_data: Mapping[str, Any] = data['modActions'] optional_user_dossier_data: Optional[Mapping[str, Any]] = data['user'] or None conversation = load_conversation_info(conversation_data, client) user_dossier = None if optional_user_dossier_data: user_dossier = load_user_dossier(optional_user_dossier_data) messages: MutableSequence[Message] = [] actions: MutableSequence[ModAction] = [] history: MutableSequence[object] = [] convo_references = conversation_data['objIds'] for convo_ref in convo_references: key = convo_ref['key'] id36 = convo_ref['id'] convo_obj: object = None if key == 'messages': message_data = messages_mapping_data[id36] convo_obj = load_message(message_data, client) messages.append(convo_obj) elif key == 'modActions': mod_action_data = actions_mapping_data[id36] convo_obj = load_mod_action(mod_action_data) actions.append(convo_obj) if convo_obj is None: raise Exception('unknown modmail object type encountered') history.append(convo_obj) return ConversationAggregate( info=conversation, history=history, messages=messages, actions=actions, user_dossier=user_dossier, )