Sha256: a49d051c4eb2b2f954307c0a3ca99e71230f1c965f04eed44f3172b9790db8da
Contents?: true
Size: 1.73 KB
Versions: 2
Compression:
Stored size: 1.73 KB
Contents
# frozen_string_literal: true require_dependency 'thredded/urls_helper' module Thredded # A view model for PostCommon. class PostView delegate :filtered_content, :avatar_url, :created_at, :user, :to_model, :pending_moderation?, :approved?, :blocked?, :last_moderation_record, to: :@post # @param post [Thredded::PostCommon] # @param policy [#update? #destroy?] def initialize(post, policy) @post = post @policy = policy end def can_update? @can_update ||= @policy.update? end def can_destroy? @can_destroy ||= @policy.destroy? end def can_moderate? @can_moderate ||= @policy.moderate? end def edit_path Thredded::UrlsHelper.edit_post_path(@post) end def destroy_path Thredded::UrlsHelper.delete_post_path(@post) end def permalink_path Thredded::UrlsHelper.post_permalink_path(@post.id) end # rubocop:disable Metrics/CyclomaticComplexity def cache_key moderation_state = unless @post.private_topic_post? if @post.pending_moderation? && !Thredded.content_visible_while_pending_moderation 'p' elsif @post.blocked? '-' end end [ I18n.locale, @post.cache_key, @post.user ? @post.user.cache_key : 'users/nil', moderation_state || '+', [ can_update?, can_destroy? ].map { |p| p ? '+' : '-' } * '' ].join('/') end # rubocop:enable Metrics/CyclomaticComplexity end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
thredded-0.8.4 | app/view_models/thredded/post_view.rb |
thredded-0.8.2 | app/view_models/thredded/post_view.rb |