mirror of
https://github.com/discourse/discourse.git
synced 2024-11-28 09:23:44 +08:00
09932738e5
Before, whispers were only available for staff members. Config has been changed to allow to configure privileged groups with access to whispers. Post migration was added to move from the old setting into the new one. I considered having a boolean column `whisperer` on user model similar to `admin/moderator` for performance reason. Finally, I decided to keep looking for groups as queries are only done for current user and didn't notice any N+1 queries.
72 lines
1.2 KiB
Ruby
72 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require_relative 'post_item_excerpt'
|
|
|
|
class UserPostTopicBookmarkBaseSerializer < UserBookmarkBaseSerializer
|
|
include TopicTagsMixin
|
|
include PostItemExcerpt
|
|
|
|
attributes :topic_id,
|
|
:linked_post_number,
|
|
:deleted,
|
|
:hidden,
|
|
:category_id,
|
|
:closed,
|
|
:archived,
|
|
:archetype,
|
|
:highest_post_number,
|
|
:last_read_post_number,
|
|
:bumped_at,
|
|
:slug
|
|
|
|
def topic_id
|
|
topic.id
|
|
end
|
|
|
|
def title
|
|
topic.title
|
|
end
|
|
|
|
def fancy_title
|
|
topic.fancy_title
|
|
end
|
|
|
|
def category_id
|
|
topic.category_id
|
|
end
|
|
|
|
def archetype
|
|
topic.archetype
|
|
end
|
|
|
|
def archived
|
|
topic.archived
|
|
end
|
|
|
|
def closed
|
|
topic.closed
|
|
end
|
|
|
|
def highest_post_number
|
|
scope.is_whisperer? ? topic.highest_staff_post_number : topic.highest_post_number
|
|
end
|
|
|
|
def last_read_post_number
|
|
topic_user&.last_read_post_number
|
|
end
|
|
|
|
def bumped_at
|
|
topic.bumped_at
|
|
end
|
|
|
|
def slug
|
|
topic.slug
|
|
end
|
|
|
|
private
|
|
|
|
def topic_user
|
|
@topic_user ||= topic.topic_users.find { |tu| tu.user_id == scope.user.id }
|
|
end
|
|
end
|