mirror of
https://github.com/discourse/discourse.git
synced 2026-08-14 13:58:53 +08:00
This PR makes a bookmark's "Assigned to …" badge reflect only the current, active assignment of the exact item that was bookmarked. In discourse-assign, a topic or an individual post can be assigned to a user or group, and bookmark lists show a badge for it. Previously, `BookmarkQuery.on_preload` loaded every assignment belonging to a bookmarked topic — without filtering on `active`, and keyed by `topic_id` regardless of `target_type`. Bookmarks kept showing "Assigned to …" after an assignment was deactivated (for example by `unassign_on_close`), and when a topic carried both a direct assignment and post-level assignments, whichever row loaded last won, so a bookmark could show an assignee that was never assigned the bookmarked item at all. Post bookmarks had a second problem: the `UserBookmarkBaseSerializer` extension read the topic's assignment for them, so a bookmark on an assigned post never showed that post's own assignee.
23 lines
538 B
Ruby
Vendored
23 lines
538 B
Ruby
Vendored
# frozen_string_literal: true
|
|
|
|
module PageObjects
|
|
module Components
|
|
class BookmarkList < PageObjects::Components::Base
|
|
SELECTOR = ".bookmark-list"
|
|
|
|
def has_assignee?(topic, assignee)
|
|
bookmark_row(topic).has_css?(".assigned-to", text: assignee.username)
|
|
end
|
|
|
|
def has_no_assignment?(topic)
|
|
bookmark_row(topic).has_no_css?(".assigned-to")
|
|
end
|
|
|
|
private
|
|
|
|
def bookmark_row(topic)
|
|
page.find("#{SELECTOR} .bookmark-list-item", text: topic.title)
|
|
end
|
|
end
|
|
end
|
|
end
|