__filename__ = "conversation.py"
__author__ = "Bob Mottram"
__license__ = "AGPL3+"
__version__ = "1.6.0"
__maintainer__ = "Bob Mottram"
__email__ = "bob@libreserver.org"
__status__ = "Production"
__module_group__ = "Timeline"
import os
from conversation import download_conversation_posts
from flags import is_public_post
from utils import remove_id_ending
from utils import get_config_param
from utils import get_nickname_from_actor
from utils import get_domain_from_actor
from utils import get_attributed_to
from utils import text_mode_removals
from blocking import is_blocked
from webapp_utils import text_mode_browser
from webapp_utils import html_header_with_external_style
from webapp_utils import html_post_separator
from webapp_utils import html_footer
from webapp_utils import get_banner_file
from webapp_post import individual_post_as_html
def html_conversation_view(authorized: bool, post_id: str,
                           translate: {}, base_dir: str,
                           http_prefix: str,
                           nickname: str, domain: str,
                           project_version: str,
                           recent_posts_cache: {},
                           max_recent_posts: int,
                           session,
                           cached_webfingers,
                           person_cache: {},
                           port: int,
                           yt_replace_domain: str,
                           twitter_replacement_domain: str,
                           show_published_date_only: bool,
                           peertube_instances: [],
                           allow_local_network_access: bool,
                           theme_name: str,
                           system_language: str,
                           max_like_count: int,
                           signing_priv_key_pem: str,
                           cw_lists: {},
                           lists_enabled: str,
                           timezone: str, bold_reading: bool,
                           dogwhistles: {}, access_keys: {},
                           min_images_for_accounts: [],
                           debug: bool, buy_sites: {},
                           blocked_cache: [],
                           block_federated: [],
                           auto_cw_cache: {},
                           ua_str: str,
                           default_timeline: str,
                           mitm_servers: [],
                           instance_software: {}) -> str:
    """Show a page containing a conversation thread
    """
    conv_posts = \
        download_conversation_posts(authorized,
                                    session, http_prefix, base_dir,
                                    nickname, domain,
                                    post_id, debug, mitm_servers)
    if not conv_posts:
        return None
    css_filename = base_dir + '/epicyon-profile.css'
    if os.path.isfile(base_dir + '/epicyon.css'):
        css_filename = base_dir + '/epicyon.css'
    instance_title = \
        get_config_param(base_dir, 'instanceTitle')
    preload_images: list[str] = []
    metadata_str = ''
    if post_id:
        # https://swicg.github.io/activitypub-html-discovery/#html-link-element
        # link to the activitypub post
        metadata_str += \
            '    \n'
    conv_str = \
        html_header_with_external_style(css_filename, instance_title,
                                        metadata_str, preload_images)
    # banner and row of buttons
    users_path = '/users/' + nickname
    banner_file, _ = get_banner_file(base_dir, nickname, domain, theme_name)
    conv_str += \
        '\n' + \
        '