1. 24 Jul, 2015 5 commits
    • Nick Stenning's avatar
      Consolidate session service and session helpers · ed44cb77
      Nick Stenning authored
      This commit does three things. In order of importance:
      
      - wraps the ngResource for managing session state in a service, which
        allows us to expose current session state as `session.state` on that
        instance. This means that components of the application that don't
        want to alter or explicitly fetch session state, but wish to display
        some part of it (such as the current authenticated userid, etc.) can
        do so more easily.
      - moves configuration of the session resources into the session service
        rather than requiring configuration from outside via a
        sessionProvider.
      - translates the session service to JavaScript from CoffeeScript.
      ed44cb77
    • Sean Hammond's avatar
      Merge pull request #2401 from hypothesis/features-client-check-pending · b29c9bac
      Sean Hammond authored
      Fix infinite digest cycle caused by feature flag client
      b29c9bac
    • Nick Stenning's avatar
      Only make one request for features data at once · 726ecc0b
      Nick Stenning authored
      This was a fun bug. If multiple feature checks are done in rapid
      succession when the features cache is empty (such as, for example,
      during the first digest cycle at application boot time) then the
      features client would keep kicking off HTTP requests until the first one
      returned.
      
      This would clearly be a misfeature, but wouldn't actually have caused
      any problems but for the fact that the spinner in
      `h/directives/simple-search.coffee` does this to determine whether to
      spin:
      
          scope.$watch (-> $http.pendingRequests.length), (pending) ->
            scope.loading = (pending > 0)
      
      This means that kicking off dozens of requests at a time keeps
      invalidating the digest cycle (because the value of
      `$http.pendingRequests.length` keeps changing), so it never ends. The
      result is the ever-horrible `infdig` (infinite digest cycle) error from
      Angular: https://docs.angularjs.org/error/$rootScope/infdig.
      726ecc0b
    • Nick Stenning's avatar
      Be strict about request counting in tests · e003383b
      Nick Stenning authored
      The angular $httpBackend mocking service supports two primary means of
      usage:
      
         .expect(...).respond(...)
      
      and
      
         .when(...).respond(...)
      
      The latter pattern allows a single handler to respond to multiple
      requests, in any order. The latter is precise -- one .expect() must be
      matched by one request, in the correct order.
      
      This commit changes the tests for the "features" service to use this
      more precise form of testing.
      e003383b
    • Randall Leeds's avatar
      Bump dom-anchor-text-quote version · ed0e1dfd
      Randall Leeds authored
      ed0e1dfd
  2. 23 Jul, 2015 1 commit
    • Randall Leeds's avatar
      Support relative URLs from document info plugins · 8513fb6d
      Randall Leeds authored
      PDF usages might want to specify relative URLs to get around proxy
      restrictions with a custom viewer. Even link tags support relative
      URLs for rel=canonical though it's probably a bad idea as a publisher.
      In any case, we should clearly just do this.
      8513fb6d
  3. 22 Jul, 2015 4 commits
  4. 21 Jul, 2015 12 commits
  5. 20 Jul, 2015 10 commits
  6. 19 Jul, 2015 4 commits
  7. 17 Jul, 2015 3 commits
    • Randall Leeds's avatar
      Merge pull request #2351 from hypothesis/uri-module · dd081bb6
      Randall Leeds authored
      Introduce the h.api.uri module for URI normalisation/expansion
      dd081bb6
    • Nick Stenning's avatar
      Only make one search query per frame on page load · 28ac128e
      Nick Stenning authored
      Previously, when loading Hypothesis into a page, the client would make
      one search request for each and every URI found on the page, including
      those found by the document metadata scanners (in the Annotator
      "Document" and "PDF" plugins.)
      
      This is wasteful of network bandwidth, and moreover should not be
      necessary in most cases due to the ability to expand to equivalent URIs
      on the server side.
      
      The component responsible for coordinating communication across page
      frames is the "crossframe" service. This services maintains a registry
      of page frames (previously called "providers") and their associated
      metadata. This commit reduces the metadata stored to simply the page
      URL, or in the case of PDF documents, the fingerprint URN.
      
      It's worth noting that this *does* change behaviour in one important
      way: if a page contains document equivalence data that we've never seen
      before, and one of the alternate URIs has already been annotated, then
      this change will mean we do not load annotations until that page itself
      has been annotated (and thus the document equivalence data updated). I
      am assuming that this is an extreme edge case.
      28ac128e
    • Nick Stenning's avatar
      Merge pull request #2362 from hypothesis/anchoring-rewrite · 0b2a6109
      Nick Stenning authored
      Anchoring rewrite
      0b2a6109
  8. 16 Jul, 2015 1 commit