FEATURE: Promote polymorphic bookmarks (#339)
This removes the use_polymorphic_bookmarks site setting guard and promotes that code to the only code used.
This commit is contained in:
parent
cbf941e642
commit
8d1aa65d5f
30
plugin.rb
30
plugin.rb
|
@ -188,7 +188,6 @@ after_initialize do
|
|||
|
||||
BookmarkQuery.on_preload do |bookmarks, bookmark_query|
|
||||
if SiteSetting.assign_enabled?
|
||||
if SiteSetting.use_polymorphic_bookmarks
|
||||
topics = Bookmark.select_type(bookmarks, "Topic").map(&:bookmarkable).concat(
|
||||
Bookmark.select_type(bookmarks, "Post").map { |bm| bm.bookmarkable.topic }
|
||||
).uniq
|
||||
|
@ -198,15 +197,6 @@ after_initialize do
|
|||
assigned_to = assignments[topic.id]&.assigned_to
|
||||
topic.preload_assigned_to(assigned_to)
|
||||
end
|
||||
else
|
||||
topics = bookmarks.map(&:topic)
|
||||
assignments = Assignment.strict_loading.where(topic_id: topics).includes(:assigned_to).index_by(&:topic_id)
|
||||
|
||||
topics.each do |topic|
|
||||
assigned_to = assignments[topic.id]&.assigned_to
|
||||
topic.preload_assigned_to(assigned_to)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -601,25 +591,6 @@ after_initialize do
|
|||
|
||||
register_permitted_bulk_action_parameter :username
|
||||
|
||||
# UserBookmarkSerializer
|
||||
add_to_serializer(:user_bookmark, :assigned_to_user, false) do
|
||||
BasicUserSerializer.new(topic.assigned_to, scope: scope, root: false).as_json
|
||||
end
|
||||
|
||||
add_to_serializer(:user_bookmark, 'include_assigned_to_user?') do
|
||||
(SiteSetting.assigns_public || scope.can_assign?) && topic.assigned_to&.is_a?(User)
|
||||
end
|
||||
|
||||
add_to_serializer(:user_bookmark, :assigned_to_group, false) do
|
||||
BasicGroupSerializer.new(topic.assigned_to, scope: scope, root: false).as_json
|
||||
end
|
||||
|
||||
add_to_serializer(:user_bookmark, 'include_assigned_to_group?') do
|
||||
(SiteSetting.assigns_public || scope.can_assign?) && topic.assigned_to&.is_a?(Group)
|
||||
end
|
||||
|
||||
if SiteSetting.use_polymorphic_bookmarks
|
||||
# UserBookmarkBaseSerializer
|
||||
add_to_class(:user_bookmark_base_serializer, :assigned_to) do
|
||||
@assigned_to ||= bookmarkable_type == "Topic" ? bookmarkable.assigned_to : bookmarkable.topic.assigned_to
|
||||
end
|
||||
|
@ -647,7 +618,6 @@ after_initialize do
|
|||
return false if !can_have_assignment?
|
||||
(SiteSetting.assigns_public || scope.can_assign?) && assigned_to&.is_a?(Group)
|
||||
end
|
||||
end
|
||||
|
||||
add_to_serializer(:basic_user, :assign_icon) do
|
||||
'user-plus'
|
||||
|
|
|
@ -7,7 +7,6 @@ describe UserBookmarkBaseSerializer do
|
|||
include_context 'A group that is allowed to assign'
|
||||
|
||||
before do
|
||||
SiteSetting.use_polymorphic_bookmarks = true
|
||||
SiteSetting.assign_enabled = true
|
||||
add_to_assign_allowed_group(user)
|
||||
end
|
||||
|
@ -19,7 +18,7 @@ describe UserBookmarkBaseSerializer do
|
|||
|
||||
context "for Topic bookmarkable" do
|
||||
let!(:bookmark) { Fabricate(:bookmark, user: user, bookmarkable: post.topic) }
|
||||
xit "includes assigned user in serializer" do
|
||||
it "includes assigned user in serializer" do
|
||||
Assigner.new(topic, user).assign(user)
|
||||
serializer = UserTopicBookmarkSerializer.new(bookmark, scope: guardian)
|
||||
bookmark = serializer.as_json[:user_topic_bookmark]
|
||||
|
@ -29,7 +28,7 @@ describe UserBookmarkBaseSerializer do
|
|||
expect(bookmark[:assigned_to_group]).to be(nil)
|
||||
end
|
||||
|
||||
xit "includes assigned group in serializer" do
|
||||
it "includes assigned group in serializer" do
|
||||
Assigner.new(topic, user).assign(assign_allowed_group)
|
||||
serializer = UserTopicBookmarkSerializer.new(bookmark, scope: guardian)
|
||||
bookmark = serializer.as_json[:user_topic_bookmark]
|
||||
|
@ -42,7 +41,7 @@ describe UserBookmarkBaseSerializer do
|
|||
|
||||
context "for Post bookmarkable" do
|
||||
let!(:bookmark) { Fabricate(:bookmark, user: user, bookmarkable: post) }
|
||||
xit "includes assigned user in serializer" do
|
||||
it "includes assigned user in serializer" do
|
||||
Assigner.new(topic, user).assign(user)
|
||||
serializer = UserPostBookmarkSerializer.new(bookmark, scope: guardian)
|
||||
bookmark = serializer.as_json[:user_post_bookmark]
|
||||
|
@ -52,7 +51,7 @@ describe UserBookmarkBaseSerializer do
|
|||
expect(bookmark[:assigned_to_group]).to be(nil)
|
||||
end
|
||||
|
||||
xit "includes assigned group in serializer" do
|
||||
it "includes assigned group in serializer" do
|
||||
Assigner.new(topic, user).assign(assign_allowed_group)
|
||||
serializer = UserPostBookmarkSerializer.new(bookmark, scope: guardian)
|
||||
bookmark = serializer.as_json[:user_post_bookmark]
|
||||
|
|
Loading…
Reference in New Issue