1. 01 Jul, 2016 7 commits
  2. 30 Jun, 2016 13 commits
    • Robert Knight's avatar
      Merge pull request #1 from hypothesis/direct-document-link-from-stream · 8a5ab37d
      Robert Knight authored
      Show direct links on stream page when available (FIRST!)
      8a5ab37d
    • Alice Wyan's avatar
      Refactor domainAndTitle into smaller pieces · c4dea460
      Alice Wyan authored
      c4dea460
    • Robert Knight's avatar
      Use a file that actually exists as the test page content in the live reload server · 91b9a22d
      Robert Knight authored
      The CHANGES file is part of the 'h' repo and no longer exists in the
      'client' repo that was forked from it.
      91b9a22d
    • Alice Wyan's avatar
      Remove no longer needed auxiliary file document-domain.js · dc00cf4c
      Alice Wyan authored
      Move relevant tests to annotation-metadata-test.js, and fix a bug
      in annotation-metadata.js.
      dc00cf4c
    • Robert Knight's avatar
      Remove use of ngResource for search and annotation queries · 0d9217ec
      Robert Knight authored
      Several aspects of ngResource make it sub-optimal for our needs:
      
       1. It mutates the model object directly after making an API call, which
          does not fit well with usage in a Redux app where the UI state should
          be an immutable object.
      
       2. The ngResource classes can only be constructed once the API
          description has been retrieved. At least one place in our code,
          which handled newly created annotations arriving from the page,
          failed to account for this.
      
      This commit therefore replaces use of ngResource for making API calls
      to the search and annotation endpoints with a simple wrapper around HTTP
      requests which makes a call and then returns the resulting object.
      
      The new wrapper will wait until the API description has been received
      before attempting to make an API call, avoiding problem (2) above.
      
      As a bonus, this brings us a step towards decoupling the JS API client
      from Angular so we could re-use it outside the app in future.
      
       * Replace ngResource with simple $http wrapper in store.js
      
       * Add tests for annotation update and deletion API calls
      
       * Change tests in annotation-test.js from
         `assert(predicate(actual, expected))` form to
         `assert.predicate(actual, expected))` form as this results in errors
         that are _much_ easier to debug when they fail.
      0d9217ec
    • Robert Knight's avatar
      Update shrinkwrap. · e31e91c6
      Robert Knight authored
      The primary change here is an update for zen-observable.
      e31e91c6
    • Robert Knight's avatar
      Update zen-observable dependency · 2c0b70a2
      Robert Knight authored
      Update to zen-observable v0.3.0 which implements several changes to the
      spec, the most notable of which is that Observable.{of, from, forEach}
      are now all synchronous [1].
      
      To preserve the previous behavior of `selections()` where no events were
      emitted until the next tick of the event loop, add a delay before
      checking for the initial selection.
      
      [1] https://github.com/zenparsing/es-observable/issues/88
      2c0b70a2
    • 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
    • Alice Wyan's avatar
      f247cb7c
    • 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
  3. 29 Jun, 2016 18 commits
  4. 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
  5. 27 Jun, 2016 1 commit
    • Robert Knight's avatar
      Prevent long URLs in quotes and bodies causing overflow (#3546) · 39b4ea8e
      Robert Knight authored
      Set a maximum width on the annotation content to prevent it overflowing
      the card and set `overflow-wrap` on annotation quotes and bodies so that
      long words without any natural breakpoints are broken in the middle if
      necessary to prevent overflow.
      
      Fixes #3421
      39b4ea8e