1. 30 Jun, 2016 5 commits
    • Sean Hammond's avatar
      Merge pull request #3 from hypothesis/redux-angular-digest · d87490f3
      Sean Hammond authored
      Trigger Angular digest cycle if necessary during Redux action dispatches
      d87490f3
    • Robert Knight's avatar
      Remove digest triggering in AnnotationUISync · ae3ec0c9
      Robert Knight authored
      This is no longer needed following the addition of middleware to the
      Redux store which triggers a digest following a UI state change if
      necessary.
      
      Also add a comment in the WebSocket code that we will be able to remove
      the $apply() call once session state has been moved to the Redux store.
      ae3ec0c9
    • Robert Knight's avatar
      Trigger a digest cycle after Redux action dispatches · b42d717b
      Robert Knight authored
      At various places in our code that receive external inputs (eg.
      WebSocket messages, messages from other frames etc.) we have to wrap
      that handling in a $scope.$apply() call or similar in order to trigger
      Angular's change detection cycle and sync UI components with the updated
      state of the app after handling that input.
      
      Since most changes to app state now happen as a result of a Redux action
      being dispatched, we can use Redux' built-in middleware mechanism for
      adding logic around app state changes.
      b42d717b
    • Sean Hammond's avatar
      Merge pull request #2 from hypothesis/fix-new-annot-selection · e0706967
      Sean Hammond authored
      Improve behavior when selecting pre-created annotations
      e0706967
    • Robert Knight's avatar
      Improve behavior when selecting pre-created annotations · 796ecdfe
      Robert Knight authored
      Selecting a pre-created annotation in the page resulted in a
      'You do not have permission to see this annotation' being displayed
      because the selection mechanism only supports annotations which have a
      server-assigned ID.
      
      This commit improves that behavior by ignoring annotations without IDs
      when selecting annotations.
      
      It also fixes an issue in AnnotationUISync that prevents Annotation
      objects being replaced in the UI state after they are updated on the
      server. Previously AnnotationUISync would receive the tags of
      annotations that had been selected in the page and would then look up
      annotations in a cache maintained by AnnotationSync in order to get
      Annotation objects that could be passed to `annotationUI` functions
      which needed objects with an ID.
      
      Fixes #3547
      796ecdfe
  2. 29 Jun, 2016 15 commits
  3. 28 Jun, 2016 1 commit
    • Robert Knight's avatar
      Match annotations by tags and ID in excludeAnnotations() · de6fa295
      Robert Knight authored
      After creating an annotation, we remove the pre-created annotation from
      the Redux store and replace it with the saved version from the server.
      
      In order to determine which pre-created annotation to remove when adding
      the version from the server, we need to match on local tag, since the
      version from the server has no ID - but it does have a local tag since
      that is copied across from the pre-to-post created version.
      de6fa295
  4. 27 Jun, 2016 3 commits
  5. 24 Jun, 2016 7 commits
    • Robert Knight's avatar
      Merge pull request #3529 from... · 206278e6
      Robert Knight authored
      Merge pull request #3529 from hypothesis/3167-do-not-show-you-do-not-have-permission-card-while-waiting-for-document-to-load
      
      Don't show permissions error before annotation
      206278e6
    • Robert Knight's avatar
      Match drafts by local tag as well as ID · 214e40fc
      Robert Knight authored
      In preparation for making Annotation objects immutable, enable the
      drafts service to match local annotations which do not have an ID by
      their local tag.
      214e40fc
    • Sean Hammond's avatar
      Don't show permissions error before annotation · a698d261
      Sean Hammond authored
      Don't momentarily show a "You do not have permission to see this
      annotation" card before showing the annotation when loading a
      direct-linked annotation.
      
      Fixes #3167.
      
      When following direct links to annotations on certain documents,
      for example large PDF files that take a while to load,
      a "You do not have permission to see this annotation" card was being
      displayed briefly in place of the annotation card, before quickly being
      replaced by the correct annotation card.
      
      Previously the logic of the WidgetController.isLoading() function was to
      return true if we are currently waiting for the response to an
      annotation search request that we've sent.
      
      The theory is that this was happening:
      
      1. Client loads, but PDF has not yet loaded, so URL is unknown.
      
      2. Since the URL is unknown, the sidebar does not start fetching
         annotations and isLoading() returns false.
      
      3. Since the client a) Has a selection but b) Is not in a loading state
         - it thinks that it failed to fetch the annotation and displays the
         "You do not have permission to see this annotation" message,
      
      4. Once the PDF finishes loading, the URL is updated and that is
         reported to the sidebar which then performs a search query and
         isLoading() starts to return true until the search query response
         arrives then it returns false again.
      
      The fix is to make isLoading() return true if _either_ we've sent an
      annotation search request and are waiting on the response _or_ we're
      still waiting for the document to finish loading and haven't sent the
      search request yet. So instead of returning false, then true, then false
      again isLoading() will just keep returning true until both the document
      has loaded and the search response has been received, then it will start
      returning false.
      a698d261
    • Robert Knight's avatar
      Merge pull request #3497 from hypothesis/tailor-api-response-to-client · 711c6eeb
      Robert Knight authored
      Tailor API response to client
      711c6eeb
    • Robert Knight's avatar
      Fix the implementation of `isNodeInRange()` (#3522) · 8cbdc1e2
      Robert Knight authored
      This function failed to account for the case where the node was
      contained by, but not equal to, the range's startContainer.
      
      In new browsers we could just use `Range.isPointInRange()`. Since that
      is not available in IE 10/11, add an implementation adapted from
      Blink's `Range::isPointInRange()` C++ impl, minus support for the
      `offset` parameter.
      
      This fixes an issue where the adder could fail to show up when making
      certain selections because `getTextBoundingBoxes()` could incorrectly
      fail to find the text nodes within certan ranges.
      
      Fixes #3521
      8cbdc1e2
    • chdorner's avatar
      Update client's document data extraction · 08776cd9
      chdorner authored
      The `annotation.uri` now always is a linkable URI if we got that data
      when the annotation got created. There is no need anymore to try and
      find another linkable URI from the document data.
      This also removes the type check of `annotation.document.title` since
      the presentation layer on the backend always returns an array of
      strings (or the `title` property is missing).
      08776cd9
    • Sean Hammond's avatar
      Merge pull request #3526 from hypothesis/gh3523-non-text-selection-fix · 6c7533d8
      Sean Hammond authored
      Fix adder breaking after making a selection containing no text
      6c7533d8
  6. 23 Jun, 2016 3 commits
    • Sean Hammond's avatar
      Merge pull request #3519 from hypothesis/request-scoped-session · 979b83c4
      Sean Hammond authored
      Use request-scoped rather than thread-local session
      979b83c4
    • Robert Knight's avatar
      Merge pull request #3531 from hypothesis/fix-missing-pdf-highlights · 3242665f
      Robert Knight authored
      Fix missing PDF highlights
      3242665f
    • Nick Stenning's avatar
      Fix missing PDF highlights · 8f4cc121
      Nick Stenning authored
      fda63b4 unfortunately broke highlighting in PDFs, because the PDF
      anchoring code first finds the text in the document, and then uses a
      TextPositionSelector and the HTML anchoring code to select a range in
      the rendered page for highlighting.
      
      This commit fixes that issue by moving the TextQuoteSelector check up a
      level into `Guest#anchor`.
      
      I've added two tests for this in `guest-test.coffee` -- one tests that
      annotations where the target contains no TextQuoteSelector are marked as
      orphans, and the second tests that the low-level anchoring code is never
      called in this case.
      
      I have also removed the integration test, on the basis that I don't
      think integration testing failure cases is a good habit to get into.
      
      Fixes #3530.
      8f4cc121
  7. 22 Jun, 2016 5 commits
  8. 21 Jun, 2016 1 commit