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|
|
BookmarkQuery.on_preload do |bookmarks, bookmark_query|
|
||||||
if SiteSetting.assign_enabled?
|
if SiteSetting.assign_enabled?
|
||||||
if SiteSetting.use_polymorphic_bookmarks
|
|
||||||
topics = Bookmark.select_type(bookmarks, "Topic").map(&:bookmarkable).concat(
|
topics = Bookmark.select_type(bookmarks, "Topic").map(&:bookmarkable).concat(
|
||||||
Bookmark.select_type(bookmarks, "Post").map { |bm| bm.bookmarkable.topic }
|
Bookmark.select_type(bookmarks, "Post").map { |bm| bm.bookmarkable.topic }
|
||||||
).uniq
|
).uniq
|
||||||
|
@ -198,15 +197,6 @@ after_initialize do
|
||||||
assigned_to = assignments[topic.id]&.assigned_to
|
assigned_to = assignments[topic.id]&.assigned_to
|
||||||
topic.preload_assigned_to(assigned_to)
|
topic.preload_assigned_to(assigned_to)
|
||||||
end
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -601,25 +591,6 @@ after_initialize do
|
||||||
|
|
||||||
register_permitted_bulk_action_parameter :username
|
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
|
add_to_class(:user_bookmark_base_serializer, :assigned_to) do
|
||||||
@assigned_to ||= bookmarkable_type == "Topic" ? bookmarkable.assigned_to : bookmarkable.topic.assigned_to
|
@assigned_to ||= bookmarkable_type == "Topic" ? bookmarkable.assigned_to : bookmarkable.topic.assigned_to
|
||||||
end
|
end
|
||||||
|
@ -647,7 +618,6 @@ after_initialize do
|
||||||
return false if !can_have_assignment?
|
return false if !can_have_assignment?
|
||||||
(SiteSetting.assigns_public || scope.can_assign?) && assigned_to&.is_a?(Group)
|
(SiteSetting.assigns_public || scope.can_assign?) && assigned_to&.is_a?(Group)
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
add_to_serializer(:basic_user, :assign_icon) do
|
add_to_serializer(:basic_user, :assign_icon) do
|
||||||
'user-plus'
|
'user-plus'
|
||||||
|
|
|
@ -7,7 +7,6 @@ describe UserBookmarkBaseSerializer do
|
||||||
include_context 'A group that is allowed to assign'
|
include_context 'A group that is allowed to assign'
|
||||||
|
|
||||||
before do
|
before do
|
||||||
SiteSetting.use_polymorphic_bookmarks = true
|
|
||||||
SiteSetting.assign_enabled = true
|
SiteSetting.assign_enabled = true
|
||||||
add_to_assign_allowed_group(user)
|
add_to_assign_allowed_group(user)
|
||||||
end
|
end
|
||||||
|
@ -19,7 +18,7 @@ describe UserBookmarkBaseSerializer do
|
||||||
|
|
||||||
context "for Topic bookmarkable" do
|
context "for Topic bookmarkable" do
|
||||||
let!(:bookmark) { Fabricate(:bookmark, user: user, bookmarkable: post.topic) }
|
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)
|
Assigner.new(topic, user).assign(user)
|
||||||
serializer = UserTopicBookmarkSerializer.new(bookmark, scope: guardian)
|
serializer = UserTopicBookmarkSerializer.new(bookmark, scope: guardian)
|
||||||
bookmark = serializer.as_json[:user_topic_bookmark]
|
bookmark = serializer.as_json[:user_topic_bookmark]
|
||||||
|
@ -29,7 +28,7 @@ describe UserBookmarkBaseSerializer do
|
||||||
expect(bookmark[:assigned_to_group]).to be(nil)
|
expect(bookmark[:assigned_to_group]).to be(nil)
|
||||||
end
|
end
|
||||||
|
|
||||||
xit "includes assigned group in serializer" do
|
it "includes assigned group in serializer" do
|
||||||
Assigner.new(topic, user).assign(assign_allowed_group)
|
Assigner.new(topic, user).assign(assign_allowed_group)
|
||||||
serializer = UserTopicBookmarkSerializer.new(bookmark, scope: guardian)
|
serializer = UserTopicBookmarkSerializer.new(bookmark, scope: guardian)
|
||||||
bookmark = serializer.as_json[:user_topic_bookmark]
|
bookmark = serializer.as_json[:user_topic_bookmark]
|
||||||
|
@ -42,7 +41,7 @@ describe UserBookmarkBaseSerializer do
|
||||||
|
|
||||||
context "for Post bookmarkable" do
|
context "for Post bookmarkable" do
|
||||||
let!(:bookmark) { Fabricate(:bookmark, user: user, bookmarkable: post) }
|
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)
|
Assigner.new(topic, user).assign(user)
|
||||||
serializer = UserPostBookmarkSerializer.new(bookmark, scope: guardian)
|
serializer = UserPostBookmarkSerializer.new(bookmark, scope: guardian)
|
||||||
bookmark = serializer.as_json[:user_post_bookmark]
|
bookmark = serializer.as_json[:user_post_bookmark]
|
||||||
|
@ -52,7 +51,7 @@ describe UserBookmarkBaseSerializer do
|
||||||
expect(bookmark[:assigned_to_group]).to be(nil)
|
expect(bookmark[:assigned_to_group]).to be(nil)
|
||||||
end
|
end
|
||||||
|
|
||||||
xit "includes assigned group in serializer" do
|
it "includes assigned group in serializer" do
|
||||||
Assigner.new(topic, user).assign(assign_allowed_group)
|
Assigner.new(topic, user).assign(assign_allowed_group)
|
||||||
serializer = UserPostBookmarkSerializer.new(bookmark, scope: guardian)
|
serializer = UserPostBookmarkSerializer.new(bookmark, scope: guardian)
|
||||||
bookmark = serializer.as_json[:user_post_bookmark]
|
bookmark = serializer.as_json[:user_post_bookmark]
|
||||||
|
|
Loading…
Reference in New Issue