1. 30 Oct, 2015 9 commits
    • Robert Knight's avatar
      Preserve unsaved changes when switching groups · 72e37852
      Robert Knight authored
      Refactor the drafts service to preserve unsaved edits
      when switching groups.
      
      This rewrites the drafts service so that it can preserve
      unsaved changes for new and existing annotations when
      switching groups.
      
      For each annotation, the drafts service now maintains
      an object containing the unsaved changes in addition to
      the model for the annotation which was being edited.
      
       * For new annotations, the annotation is moved to the current
         group when switching groups.
      
       * For edits to existing annotations, the unsaved changes are
         saved to the drafts service.
      
       * When an annotation card is created, switch to editing mode
         automatically if a draft is present.
      
       * Avoid automatically discarding the draft when an annotation
         is unloaded. This allows unsaved edits to existing annotations
         in a group to be restored when switching back to the group.
      72e37852
    • Nick Stenning's avatar
      Merge pull request #2693 from robertknight/avoid-group-reload-on-change · e9b4045e
      Nick Stenning authored
      Avoid route reload on change
      e9b4045e
    • Nick Stenning's avatar
      Merge pull request #2699 from robertknight/gh2654-safari_search_expander · be1ba7d4
      Nick Stenning authored
      Fix search button not expanding search bar in Safari
      be1ba7d4
    • Robert Knight's avatar
      Fix search button not expanding search bar in Safari · b5c451a8
      Robert Knight authored
      The search bar expands from 0 to 150px when the input is focused
      but in Safari the <input> will not accept focus via
      input.focus() if its max-width is _exactly_ 0px.
      
      Setting it to a near-zero +ve value instead avoids the problem.
      
      Fixes #2654
      b5c451a8
    • Robert Knight's avatar
      Merge pull request #2697 from hypothesis/capture-request-context-for-sentry · 43f61596
      Robert Knight authored
      Add request context to errors caught by Sentry
      43f61596
    • Nick Stenning's avatar
      Merge pull request #2687 from... · 7c535c67
      Nick Stenning authored
      Merge pull request #2687 from hypothesis/github-2686-fix-invalid-permissions-when-creating-annotations-when-signed-out
      
      Set permissions of new annotations on login
      7c535c67
    • Sean Hammond's avatar
      Use the USER_CHANGED event · d53580a5
      Sean Hammond authored
      d53580a5
    • Sean Hammond's avatar
      Refactor client-side annotation permissions generation · 034ef9e9
      Sean Hammond authored
      Move the responsibility for creating the default permissions for new
      annotations according to the cached-in-local-storage shared/private setting
      into permissions.coffee, where it's with other permissions related stuff and
      can be tested more easily.
      034ef9e9
    • Sean Hammond's avatar
      Set permissions of new annotations on login · d4027d01
      Sean Hammond authored
      While signed out create a new annotation. You'll see a "You must sign in
      to create an annotation" card. This card is in fact an annotation
      in the client-side code, but one that has no user, no permissions, etc
      etc. If you sign in, you'll then see a full annotation card with editor
      open in place of the previous card, you can type an annotation and save
      it.
      
      Except that this will send invalid permissions to the server, which will
      happy save them (no validation) and then crash.
      
      The fix:
      
      On sign in, set the model.permissions of such annotations. This means
      that the Post dropdown will set itself correctly to shared or private
      and on posting the annotation the correct permissions will be sent to
      the server.
      
      Also fixed permissions.coffee to return null instead of invalid
      permissions when not signed in.
      
      Fixes #2686.
      d4027d01
  2. 29 Oct, 2015 14 commits
    • Robert Knight's avatar
    • Robert Knight's avatar
      Add some comments to explain what the `threading` service is for. · 66411793
      Robert Knight authored
      Add documentation explaining what the threading service
      does and links explaining the 'jwz' message threading
      algorithm and a reference to the JS implementation that
      we are using.
      66411793
    • Robert Knight's avatar
      Avoid reloading whole view when focused group changes · d0099f12
      Robert Knight authored
      When the focused group changes, instead of reloading the whole
      view just unload the currently displayed annotations and then
      reload the annotations for the newly selected group(s) and
      any drafts of unsaved annotations.
      
      The only immediately 'visible' effect of the change is
      that switching groups now only results in a call to /search
      rather than network requests to fetch session state and features.
      
      In future this should make it easier to preserve state
      for the area below the top bar when switching groups.
      d0099f12
    • Nick Stenning's avatar
      Merge pull request #2691 from robertknight/publish-btn-cleanup · 887ac52d
      Nick Stenning authored
      Fix 'Post to' button not updating when an annotation's group changed & cleanup code
      887ac52d
    • Robert Knight's avatar
      Fix 'Post to' button not updating when groups changed · 4cafca01
      Robert Knight authored
      The 'group' property on the scope used by the 'Post to' button
      was set when the component was instantiated but not updated
      if the group subsequently changed.
      
      Fix this and simplify the code by using the 'bindToController'
      facility from Angular 1.3.x to avoid copying properties
      from the directive's scope to the controller.
      
      This means that 'vm.group' expressions in the controller now
      update when the corresponding attribute changes.
      4cafca01
    • Nick Stenning's avatar
      Merge pull request #2679 from robertknight/t148-card_group_style_refactor · 58a8abab
      Nick Stenning authored
      Adjust annotation card style to fit groups design
      58a8abab
    • Sean Hammond's avatar
      Merge pull request #2690 from hypothesis/match-tags-according-to-mapping-analyzer · cb8859ed
      Sean Hammond authored
      Query tags field with a match query (use mapping analyzer)
      cb8859ed
    • Robert Knight's avatar
      Adjust annotation card style to fit groups design · f9ffbcaf
      Robert Knight authored
       * Move the group name and scope indicator onto a line
         below the username
      
       * Make the group name a lighter gray in the default state
      
       * Adjust the margins around the group card
      
       * Use a consistent font size from the typography palette
         for all text in the annotation card header.
      
       * Remove the 'Only Me' text next to the lock badge.
         Along with everything else in the header this added
         too much noise.
      
       * Increase the spacing between the group name and
         the excerpt
      
       * Fix unnecessary margin above annotations with no quotes
         by hide the annotation quote list section if an annotation
         does not have quotes.
      
       * Add a minimum margin between the annotation heading and the editor
      
      T-148
      f9ffbcaf
    • Nick Stenning's avatar
      Merge pull request #2684 from hypothesis/gh2675-wait_for_features · fc913bb3
      Nick Stenning authored
      Wait for feature flag data before loading sidebar view
      fc913bb3
    • Nick Stenning's avatar
      Merge pull request #2683 from hypothesis/document_link_refactor · d11c2dfa
      Nick Stenning authored
      Document link refactor
      d11c2dfa
    • Robert Knight's avatar
      Clear features cache only when logged in user changes · 4c04077d
      Robert Knight authored
      Clear the features cache only when the logged-in user changes,
      rather than on any change to session data.
      4c04077d
    • Robert Knight's avatar
      Wait for feature flag data before loading sidebar view · 7299b4d8
      Robert Knight authored
      Feature flags can affect the initial search query when
      the app loads. eg. If the groups feature is enabled then
      we will by default load annotations for the most recently
      used group, otherwise we'll load public annotations.
      
      Therefore, wait for the feature flags to be retrieved
      before loading the view.
      
      The feature flags endpoint is very fast so the behavior
      was correct most of the time previously but occassionally
      the app would load and fetch Public annotations before
      the feature data was available which would have resulted
      in fetching group annotations.
      
      At the same time, this clears the feature flag data
      when the current user changes and fixes an issue where
      switching from a non-groups enabled account to a groups-enabled
      account did not immediately update the UI.
      
      Fixes #2675
      7299b4d8
    • Nick Stenning's avatar
      Merge pull request #2688 from robertknight/groups_changed_exception · c6975968
      Nick Stenning authored
      Fix exception when GROUPS_CHANGED event is broadcast during route load
      c6975968
    • Robert Knight's avatar
      Fix exception when GROUPS_CHANGED event is broadcast during route load · e30dffdd
      Robert Knight authored
      The <group-list> directive attempted to update itself in
      response to a group change notification without triggering
      a full digest cycle by using `$scope.$apply`.
      
      This was based on the incorrect understanding that $apply only
      dirty-checks the current scope downwards. In fact, in dirty-checks
      the root scope. Additionally, the logic was pointless since
      group list/focus changes happen in response to two types of events,
      both of which are triggered in the context of $apply:
      
       * An event handler when the user selects a group
      
       * A callback from angular-websocket when a WebSocket message
         is received.
      e30dffdd
  3. 28 Oct, 2015 6 commits
  4. 27 Oct, 2015 11 commits