Class: Decidim::Comments::CommentType

Inherits:
Api::Types::BaseObject show all
Defined in:
decidim-comments/lib/decidim/api/comment_type.rb

Overview

This type represents a comment on a commentable object.

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Api::Types::BaseObject

allowed_to?, determine_subject_name, local_context, permission_chain

Class Method Details

.authorized?(object, context) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
54
55
56
57
58
59
60
61
62
# File 'decidim-comments/lib/decidim/api/comment_type.rb', line 51

def self.authorized?(object, context)
  chain = []
  if object.respond_to?(:commentable) && !object.commentable.is_a?(Decidim::Comments::Comment)
    chain.unshift(allowed_to?(:read, object.commentable, object.commentable,
                              context))
  end

  chain.unshift(!object.hidden?)
  chain.unshift(!object.deleted?)

  super && chain.all?
end

Instance Method Details

#already_reportedObject



43
44
45
# File 'decidim-comments/lib/decidim/api/comment_type.rb', line 43

def already_reported
  object.reported_by?(context[:current_user])
end

#down_votedObject



35
36
37
# File 'decidim-comments/lib/decidim/api/comment_type.rb', line 35

def down_voted
  object.down_voted_by?(context[:current_user])
end

#has_comments?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'decidim-comments/lib/decidim/api/comment_type.rb', line 39

def has_comments?
  object.comment_threads.not_hidden.size.positive?
end

#sgidObject



27
28
29
# File 'decidim-comments/lib/decidim/api/comment_type.rb', line 27

def sgid
  object.to_sgid.to_s
end

#up_votedObject



31
32
33
# File 'decidim-comments/lib/decidim/api/comment_type.rb', line 31

def up_voted
  object.up_voted_by?(context[:current_user])
end

#user_allowed_to_commentObject



47
48
49
# File 'decidim-comments/lib/decidim/api/comment_type.rb', line 47

def user_allowed_to_comment
  object.root_commentable.commentable? && object.root_commentable.user_allowed_to_comment?(context[:current_user])
end