1. 03 Nov, 2021 6 commits
    • Lyza Danger Gardner's avatar
      Use `Icon` in HelpPanel · 487b2e41
      Lyza Danger Gardner authored
      487b2e41
    • Lyza Danger Gardner's avatar
      Use `Icon` in `FilterSelect` · 4349f633
      Lyza Danger Gardner authored
      4349f633
    • Eduardo Sanz García's avatar
      Fix unreliable frame-observer test · 9afd3943
      Eduardo Sanz García authored
      Because of the debouncing of mutation observer, sometimes 50ms was not
      enough to trigger the callback function (`onFrameAdded`).
      
      For the `FrameObserver` tests, I have disabled the debouncing. It has
      the benefit that the test run faster now.
      9afd3943
    • Robert Knight's avatar
      Remove unnecessary array filter · f43663c6
      Robert Knight authored
      Remove a filter callback which always returned true. The first `!ann.id`
      condition is already part of the `store.unsavedAnnotations` logic. The
      second `isHighlight(...)` check did not work properly because the input
      was an annotation stub object with only `id` and `$tag` fields instead
      of the `Annotation` that `isHighlight` expects. For annotation stubs
      with no id, it always returned false.
      
      From a functional perspective the `isHighlight` check was also
      unnecessary. `store.unsavedAnnotations()` only returns IDs of
      annotations which have active drafts, but for highlights no draft is
      created.
      f43663c6
    • Robert Knight's avatar
      Specify type of `state` arguments to `createSelector` calls · 7bc88d9c
      Robert Knight authored
      The newest version of the `createSelector` typings require the type of
      the input argument to be determined in order for the whole call to
      typecheck. This commit implements a pattern where:
      
      - A `State` type is added in various store modules, typically defined as
        `typeof initialState`, that defines the state of that store module's
        type.
      - The type of selector function params in `createSelector` calls is
        specified with `@param {State} state` and the return type is inferred
      
      The upside of these changes is that types of selector functions are
      determined much more robustly - previously it was possible to have
      incorrect types specified via JSDoc.
      
      In the process an existing minor bug was determined where an
      `isHighlight` call in `ThreadList` was passed an unexpected type of
      object (the `annotation` property of a `Draft`) for which `isHighlight`
      did not crash but would always return false. I have simply suppressed
      this existing issue for the moment, but it will need to be fixed
      separately.
      7bc88d9c
    • dependabot[bot]'s avatar
      Bump reselect from 4.0.0 to 4.1.1 · c3436b27
      dependabot[bot] authored
      Bumps [reselect](https://github.com/reduxjs/reselect) from 4.0.0 to 4.1.1.
      - [Release notes](https://github.com/reduxjs/reselect/releases)
      - [Changelog](https://github.com/reduxjs/reselect/blob/master/CHANGELOG.md)
      - [Commits](https://github.com/reduxjs/reselect/compare/v4.0.0...v4.1.1)
      
      ---
      updated-dependencies:
      - dependency-name: reselect
        dependency-type: direct:development
        update-type: version-update:semver-minor
      ...
      Signed-off-by: 's avatardependabot[bot] <support@github.com>
      c3436b27
  2. 02 Nov, 2021 9 commits
  3. 01 Nov, 2021 19 commits
  4. 28 Oct, 2021 4 commits
  5. 27 Oct, 2021 2 commits
    • Robert Knight's avatar
      Improve field name · 4102e483
      Robert Knight authored
      This is a count of the number of reconnections, not including the
      initial connection attempt.
      4102e483
    • Robert Knight's avatar
      Move WebSocket automatic reconnection to streamer service · d9a017a2
      Robert Knight authored
      Move the logic for automatically reconnecting to the WebSocket after an
      unexpected disconnection from the `Socket` WebSocket wrapper class to
      the `StreamerService` service. The Socket class is now responsible only
      for notifying the caller of unexpected disconnections.
      
      Letting StreamerService handle reconnection ensures that a fresh
      WebSocket URL, with a current access token, is used on each attempt. The
      previous approach would re-use the same URL on each attempt. This could
      lead to an obsolete access token being used, with the result that the
      WebSocket connection degraded to an unauthenticated one and not all
      expected updates were received.
      
      As part of this change, the logic for calculating the retry delay has been
      simplified and no longer uses the `retry` package, hopefully making the
      behavior easier to understand.
      d9a017a2