1. 30 Sep, 2024 6 commits
  2. 23 Sep, 2024 10 commits
  3. 20 Sep, 2024 4 commits
    • Robert Knight's avatar
      Take into account the forced-visible set when filtering threads · 7e9a65e5
      Robert Knight authored
      When filtering annotations the `forcedVisible` list was taken into account, but
      not when filtering threads. Consult this list when filtering threads as well.
      
      This fixes an issue where newly created annotations would not be shown if they
      did not match a thread filter. Note that newly added annotations are added to
      the forced-visible set by the `ThreadList` component.
      7e9a65e5
    • Robert Knight's avatar
      Only apply selector filters to threads, not replies · 3c90f0c0
      Robert Knight authored
      Add a property to filter facets which indicate whether they apply to annotations
      and replies or only threads. Use this property to apply the filter either to all
      annotations or only the root annotation in a thread respectively.
      
      Queries based on the user or annotation body for example can apply to both.
      Queries based on a selector such as page number, book chapter or quote only make
      sense as thread-level filters.
      
      Fixes https://github.com/hypothesis/support/issues/158
      3c90f0c0
    • Robert Knight's avatar
      Allow draft annotations to match filters · 19fc6f7f
      Robert Knight authored
      The internal function that filters annotations returned a list of matching IDs.
      Unsaved annotations do not have IDs, so were excluded from the matches. Change
      the function to return a list of matching annotations instead, lifting this
      restriction.
      
      No callers of the function had to change because currently they only test the
      length of the returned array.
      
      A caveat with this change is that it only matches the data stored in the
      annotation object, not data stored in separate "draft" objects which are
      combined when rendering unsaved annotations. The result is that a filter will
      only match the fields of the annotation that are populated when the new
      annotation initially appears in the sidebar. This for example includes the user
      and page number, but not text added in the text field later.
      19fc6f7f
    • Robert Knight's avatar
      Treat empty strings as unparsable instead of open page ranges · 76040e76
      Robert Knight authored
      Previously `pageLabelInRange` treated an empty label like a fully-open page
      range ("-"). Since a fully open range overlaps all other ranges, the function
      would always return true. Now it treats an empty string as an unparsable range
      and returns false.
      
      When filtering annotations, this change means that a page range filter will
      no longer match annotations without a page range.
      76040e76
  4. 18 Sep, 2024 4 commits
  5. 16 Sep, 2024 8 commits
  6. 12 Sep, 2024 1 commit
  7. 09 Sep, 2024 5 commits
  8. 04 Sep, 2024 2 commits