# frozen_string_literal: true

module Redd
  module Models
    # A model that can be messaged (i.e. Users and Subreddits).
    module Messageable
      # Compose a message to a person or the moderators of a subreddit.
      #
      # @param to [String] the thing to send the message to (overriden by User and Subreddit)
      # @param subject [String] the subject of the message
      # @param text [String] the message text
      # @param from [Subreddit, nil] the subreddit to send the message on behalf of
      def send_message(to:, subject:, text:, from: nil)
        params = { to: to, subject: subject, text: text }
        params[:from_sr] = from.display_name if from
        client.post('/api/compose', params)
      end
    end
  end
end