2019-05-03 06:17:27 +08:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2019-01-04 01:03:01 +08:00
|
|
|
class Reviewable < ActiveRecord::Base
|
|
|
|
class Conversation
|
|
|
|
include ActiveModel::Serialization
|
|
|
|
|
|
|
|
class Post
|
|
|
|
include ActiveModel::Serialization
|
|
|
|
attr_reader :id, :user, :excerpt
|
|
|
|
|
|
|
|
def initialize(post)
|
|
|
|
@user = post.user
|
|
|
|
@id = post.id
|
|
|
|
@excerpt = FlagQuery.excerpt(post.cooked)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
attr_reader :id, :permalink, :has_more, :conversation_posts
|
|
|
|
|
|
|
|
def initialize(meta_topic)
|
|
|
|
@id = meta_topic.id
|
|
|
|
@has_more = false
|
2019-06-01 03:29:53 +08:00
|
|
|
@permalink = "#{Discourse.base_url}#{meta_topic.relative_url}"
|
2019-01-04 01:03:01 +08:00
|
|
|
@posts = []
|
|
|
|
|
|
|
|
meta_posts = meta_topic.ordered_posts.where(post_type: ::Post.types[:regular]).limit(2)
|
|
|
|
|
|
|
|
@conversation_posts = meta_posts.map { |mp| Reviewable::Conversation::Post.new(mp) }
|
|
|
|
@has_more = meta_topic.posts_count > 2
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|