Sha256: 120a38e180059b0fd28d546fb671f394a49d17c02650d35b4d4cf728c196f8df

Contents?: true

Size: 1.43 KB

Versions: 19

Compression:

Stored size: 1.43 KB

Contents

# frozen_string_literal: true

module Thredded
  class PrivatePostForm
    attr_reader :post, :topic
    delegate :id,
             :persisted?,
             :content,
             :content=,
             to: :@post

    # @param user [Thredded.user_class]
    # @param topic [PrivateTopic]
    # @param post [PrivatePost]
    # @param post_params [Hash]
    def initialize(user:, topic:, post: nil, post_params: {})
      @topic = topic
      @post = post || topic.posts.build
      user ||= Thredded::NullUser.new

      if post_params.include?(:quote_post)
        post_params[:content] =
          Thredded::ContentFormatter.quote_content(post_params.delete(:quote_post).content)
      end
      @post.attributes = post_params.merge(user: (user unless user.thredded_anonymous?))
    end

    def self.for_persisted(post)
      new(user: post.user, topic: post.postable, post: post)
    end

    def submit_path
      Thredded::UrlsHelper.url_for([@topic, @post, only_path: true])
    end

    def preview_path
      if @post.persisted?
        Thredded::UrlsHelper.private_topic_private_post_preview_path(@topic, @post)
      else
        Thredded::UrlsHelper.preview_new_private_topic_private_post_path(@topic)
      end
    end

    def save
      return false unless @post.valid?
      was_persisted = @post.persisted?
      @post.save!
      Thredded::UserPrivateTopicReadState.touch!(@post.user.id, @post) unless was_persisted
      true
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
thredded-1.1.0 app/forms/thredded/private_post_form.rb
thredded-1.0.1 app/forms/thredded/private_post_form.rb
thredded-1.0.0 app/forms/thredded/private_post_form.rb
thredded-0.16.16 app/forms/thredded/private_post_form.rb
thredded-0.16.15 app/forms/thredded/private_post_form.rb
thredded-0.16.14 app/forms/thredded/private_post_form.rb
thredded-0.16.13 app/forms/thredded/private_post_form.rb
thredded-0.16.12 app/forms/thredded/private_post_form.rb
thredded-0.16.11 app/forms/thredded/private_post_form.rb
thredded-0.16.10 app/forms/thredded/private_post_form.rb
thredded-0.16.9 app/forms/thredded/private_post_form.rb
thredded-0.16.8 app/forms/thredded/private_post_form.rb
thredded-0.16.7 app/forms/thredded/private_post_form.rb
thredded-0.16.6 app/forms/thredded/private_post_form.rb
thredded-0.16.5 app/forms/thredded/private_post_form.rb
thredded-0.16.4 app/forms/thredded/private_post_form.rb
thredded-0.16.3 app/forms/thredded/private_post_form.rb
thredded-0.16.1 app/forms/thredded/private_post_form.rb
thredded-0.16.0 app/forms/thredded/private_post_form.rb