1. 16 Sep, 2014 32 commits
  2. 15 Sep, 2014 1 commit
    • Randall Leeds's avatar
      Optimize reply count updates · 04b11378
      Randall Leeds authored
      Rather than traversing all the descendants at every digest of every
      level of every thread, propagate updates from leaf nodes to parents
      by giving each thread access to its parent thread controller. Digests
      are only ever performed at the top level and are debounced so that
      during progressive rendering of threads the number of digests is
      greatly reduced. Some adhoc experimentation yields a 50% reduction in
      digests during thread rendering on top of the performance gain by
      not traversing descendants in `messageContainer#flattenChildren` calls
      on every digest.
      
      To accomplish the debouncing, the render service now returns a cancel
      function making it have the same signature as `requestAnimationFrame`.
      04b11378
  3. 13 Sep, 2014 1 commit
  4. 12 Sep, 2014 6 commits
    • Randall Leeds's avatar
      Remove unused code · 4b600414
      Randall Leeds authored
      Card emphasis on highlight hover isn't supported by the sidebar
      right now and we no longer disable annotating in the sidebar.
      4b600414
    • Randall Leeds's avatar
      923cd7ed
    • Randall Leeds's avatar
      Simplify the render service · d1c0a45d
      Randall Leeds authored
      After I changed it so that it took a callback rather than a scope
      the data parameter became rather useless.
      d1c0a45d
    • Randall Leeds's avatar
      Refactor drafting and authentication interactions · 6c64bd65
      Randall Leeds authored
      Make changes to allow multiple top-level drafts, drafting before
      authenticating, keeping drafts while performing page searches,
      and replying to search results.
      
      - Factor out the userAuthorize option passed to the Permissions
        plugin into a local function in controllers.coffee.
      
      - Only load the Permissions plugin when logged in so that the
        plugin options do not leak information about the last logged in
        user and unattributed drafts have no user or permissions field.
      
      - When switching to highlight mode, show the sidebar and flash an
        info message informing the user that they will need to log in
        before annotations are saved, but don't prohibit highlighting.
      
      - Simplify the logic in the guest for highlight mode by offloading
        work to the annotation controller. The "inject" property is no
        longer needed. The annotation controller saves drafts of highlights
        if they have no user and persists them to the server as soon as
        the user is set.
      
      - When logging in, the app controller simply loops through all the
        drafts are publishes 'beforeAnnotationUpdated' to give the
        Permissions plugin a chance to fire.
      
      - When initializing the Store plugin, don't perform any search at
        all when not logged in. This change makes "single player" mode
        work even before logging in.
      
      - Allow hiding the sidebar when editing. Simplify the guest code
        that no longer needs to track the sidebar state by listening for
        'annotationEditorHide' and 'annotationEditorSubmit' and the
        corresponding sidebar code that fired these. They're nonsensical
        now because there isn't exactly one "editor".
      
      - Remove the concept of an 'ongoing edit' entirely, simplifying the
        sidebar code even further. Any number of edits are allowed and
        top level ones are not treated specially.
      6c64bd65
    • Randall Leeds's avatar
      Remove superfluous digest and bridge sync · 60504257
      Randall Leeds authored
      When the Store updates annotation data it only
      60504257
    • Randall Leeds's avatar
      Move showEditor out of the Bridge · 82c74147
      Randall Leeds authored
      82c74147