# frozen_string_literal: true

require "erb"

module EmailHelper
  def mailing_list_topic(topic, post_count)
    render(
      partial: partial_for("mailing_list_post"),
      locals: {
        topic: topic,
        post_count: post_count,
      },
    )
  end

  def mailing_list_topic_text(topic)
    url, title = extract_details(topic)
    raw(@markdown_linker.create(title, url))
  end

  def private_topic_title(topic)
    I18n.t("system_messages.private_topic_title", id: topic.id)
  end

  def email_topic_link(topic)
    url, title = extract_details(topic)
    raw "<a href='#{Discourse.base_url}#{url}' style='color: ##{@anchor_color}'>#{title}</a>"
  end

  def email_html_template
    EmailStyle
      .new
      .html
      .sub("%{email_content}") { capture { yield } }
      .gsub("%{html_lang}", html_lang)
      .gsub("%{dark_mode_meta_tags}", dark_mode_meta_tags)
      .gsub("%{dark_mode_styles}", dark_mode_styles)
      .html_safe
  end

  protected

  def dark_mode_meta_tags
    "
    <meta name='color-scheme' content='light dark' />
    <meta name='supported-color-schemes' content='light dark' />
    "
  end

  def dark_mode_styles
    "
    <style>
      @media (prefers-color-scheme: dark) {
        html {
          background: #151515 !important;
        }

        h1,
        h2,
        h3,
        h4,
        h5,
        h6,
        p,
        span,
        td {
          color: inherit !important;
        }

        [data-stripped-secure-media] {
          border-color: #454545 !important;
        }

        [data-stripped-secure-upload] {
          border-color: #454545 !important;
        }

        [dm='text-color'] {
          color: #dddddd;
        }

        [dm='header'] {
          background: #151515 !important;
        }

        [dm='topic-body'] {
          background: #151515 !important;
          border-bottom: 1px solid #454545 !important;
        }

        [dm='triangle'] {
          border-top-color: #151515 !important;
        }

        [dm='body'] {
          background: #222222 !important;
          color: #dddddd !important;
        }

        [dm='body_primary'] {
          background: #062e3d !important;
          color: #dddddd !important;
        }

        [dm='bg'] {
          background: #323232 !important;
          border-color: #454545 !important;
        }
      }
    </style>
    "
  end

  def extract_details(topic)
    if SiteSetting.private_email?
      [topic.slugless_url, private_topic_title(topic)]
    else
      [topic.relative_url, format_topic_title(topic.title)]
    end
  end

  def partial_for(name)
    SiteSetting.private_email? ? "email/secure_#{name}" : "email/#{name}"
  end
end
