discourse/app/serializers/user_post_topic_bookmark_base_serializer.rb
Krzysztof Kotlarek 09932738e5
FEATURE: whispers available for groups (#17170)
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.
2022-06-30 10:18:12 +10:00

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