- 20 Apr, 2021 8 commits
-
-
Robert Knight authored
This found an error in some of the existing types in the `api` service.
-
Robert Knight authored
Refactor this class to new conventions as part of https://github.com/hypothesis/client/issues/3298. - Convert the `auth` service to an ES class - Replace the internal `emitter` variable with inheritance - Rename the module from `oauth-auth.js` to just `auth.js`. The previous name is a vestige from when authorization was migrated from cookie-based to OAuth-based
-
Robert Knight authored
-
Robert Knight authored
- Convert `features` service to a class - Remove the unused `flagEnabled` method. Calls to this method have gradually been replaced by `store.isFeatureEnabled`. - Move the initialization of the background sidebar => annotator synchronization of feature flag information into an `init` method which is then called from the sidebar's entry point. This pattern is consistent with several other services. It is also necessary for services that are not depended upon by anything else because services are lazily instantiated.
-
Robert Knight authored
Put all the initialization logic in one place instead of spreading it between the constructor and `init` method.
-
Robert Knight authored
Part of https://github.com/hypothesis/client/issues/3298
-
Robert Knight authored
Part of https://github.com/hypothesis/client/issues/3298
-
Robert Knight authored
This conversion revealed some incorrect and inconsistent types. - The `filter` method was documented to return `Tag`s but actually returned strings - The `store` method required a list of `Tag`s but only used the `text` property from it. This method has been simplified to just accept a list of tag strings instead. Part of https://github.com/hypothesis/client/issues/3298
-
- 19 Apr, 2021 9 commits
-
-
Robert Knight authored
Part of https://github.com/hypothesis/client/issues/3298 In the process an issue was uncovered where an annotation could incorrectly be created without a group if there was no focused group. Address the issue by throwing an error in `AnnotationsService#create` if there is no focused group. Handling the situation in a context-appropriate way is left an exercise for higher-level code.
-
Robert Knight authored
Part of https://github.com/hypothesis/client/issues/3298
-
Robert Knight authored
Convert `localStorage` class to an ES class and add types to various places where it is referenced. Part of https://github.com/hypothesis/client/issues/3298.
-
Lyza Danger Gardner authored
Instead, use SASS from `frontend-shared` package
-
Lyza Danger Gardner authored
These shared button components have been moved to the `frontend-shared` package.
-
Lyza Danger Gardner authored
-
dependabot[bot] authored
Bumps [aws-sdk](https://github.com/aws/aws-sdk-js) from 2.884.0 to 2.888.0. - [Release notes](https://github.com/aws/aws-sdk-js/releases) - [Changelog](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-js/compare/v2.884.0...v2.888.0) Signed-off-by: dependabot[bot] <support@github.com>
-
dependabot[bot] authored
Bumps [sass](https://github.com/sass/dart-sass) from 1.32.8 to 1.32.10. - [Release notes](https://github.com/sass/dart-sass/releases) - [Changelog](https://github.com/sass/dart-sass/blob/master/CHANGELOG.md) - [Commits](https://github.com/sass/dart-sass/compare/1.32.8...1.32.10) Signed-off-by: dependabot[bot] <support@github.com>
-
dependabot[bot] authored
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.2.6 to 1.2.7. - [Release notes](https://github.com/actions/toolkit/releases) - [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md) - [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core) Signed-off-by: dependabot[bot] <support@github.com>
-
- 16 Apr, 2021 12 commits
-
-
Lyza Danger Gardner authored
-
Robert Knight authored
Update `StreamFilter` class to current service conventions. Part of https://github.com/hypothesis/client/issues/3298.
-
Robert Knight authored
Mock `retryPromiseOperation` in APIRoutesService tests to speed up tests where the operation is retried multiple times.
-
Robert Knight authored
The customized result for the first stub call was not used because a more specific response was defined earlier using `withArgs`.
-
Robert Knight authored
Follow the pattern introduced in https://github.com/hypothesis/client/pull/3296 to convert the API routes service to a class and improve various types along the way.
-
Eduardo Sanz García authored
The only way to kill `yarn test --watch` is sending a SIGINT via a <kbd>Ctrl</kbd>+<kbd>C</kbd> keyboard shorcut. Killing karma process in this way sometimes leaves the parent gulp process orphan. That's because when karma is killed by SIGINT sometimes doesn't run the `done` in the callback, hence leaving the gulp process waiting for the `done` signal. On more rare occasions, I have seen orphan karma process too. The solution presented here registers a listener for SIGINT and call the `done` function. It doesn't unregister the event.
-
Robert Knight authored
Add tests for logic in Guest related to focusing/selecting annotation cards in the sidebar when the corresponding highlights in the document are hovered.
-
Robert Knight authored
Previously there were three public methods for setting the selected annotations in the sidebar and opening it, but only one was used outside of `Guest` and there was an inconsistency when toggling vs selecting normally. - Combine the `showAnnotations`, `toggleAnnotationSelection` and `selectAnnotations` method into a single `selectAnnotations` method with a `toggle` parameter - Add tests for `selectAnnotations` - Fix an inconsistency where selecting an annotation without holding Ctrl to toggle the selection would open the sidebar, but selecting an annotation with Ctrl to toggle the selection did not
-
Robert Knight authored
-
Robert Knight authored
Give this method a name that more obviously explains what it does.
-
Robert Knight authored
Make the distinction between the private and public API for Guest clearer by marking private fields clearly.
-
Robert Knight authored
- Convert toastMessenger service to an ES class using a named export - Specify type of `toastMessenger` references to this service
-
- 15 Apr, 2021 8 commits
-
-
Kyle Keating authored
Change loadServiceSpecifiedGroups() so that it can pass along an optional group ID setting value from the `directLinkedGroupId` selector to be an initially focused group. When loading groups from a service e.g. `loadServiceSpecifiedGroups`, previously it assumed that the `directLinkedGroupId` value would never be used in this context. Since the introduction of the Notebook and specifically in the context of LMS, we have both a service setting which contains the groups (`settings.services[0].groups <Promise>`) and a top level group to set focus too. (`settings.group`).
-
Robert Knight authored
-
Robert Knight authored
Set a Z-index that is sufficient to make the dialog appear on top of other content in the sidebar, mainly the top bar. We will likely have to revise this if `confirm` is used in other contexts in future.
-
Robert Knight authored
Convert existing uses of `window.confirm` to use our own `confirm` utility which uses the standard Dialog from our pattern library. Using our own prompt avoids an immediate problem that browsers, starting with Chrome v91, are starting to block the use of `window.confirm` in third-party iframe. It also makes the visual design of the prompt match the rest of the application.
-
Robert Knight authored
-
Robert Knight authored
Import the Dialog component from the LMS frontend, adjusted to avoid dependencies on some shared variables that were specific to that application.
-
Robert Knight authored
- Introduce a union type for current route names - Use `Record<Key, Value>` rather than `Object.<Key, Value>` as it is stricter (eg. it is non-nullable)
-
Robert Knight authored
Services in `src/sidebar/services` are effectively classes. They are currently implemented with a convention that was more common pre-ES6 where the constructor is a function that creates the fields as local variables and the methods using closures and returns an object that references the closures. This pattern has advantages, especially pre-ES6, as it avoids issues with incorrect use of `this` and hides internal state from consumers. However it also has downsides: - It is less obvious to readers that they are looking at something that is logically a class - This is not an idiom we use elsewhere in the codebase, where we use native classes instead - Static analysis tools don't support this pattern for creating a class as well as they support a native class. For example `TS` creates a named type for native classes, which is convenient to reference in JSDoc comments This commit starts a process of refactoring service classes to ES classes which are named `<Thing>Service`, using the router service as a first example. Per recently agreed conventions, the classes are named rather than default exports.
-
- 14 Apr, 2021 1 commit
-
-
Kyle Keating authored
When the host config value for `requestConfigFromFrame` is an object containing a string and a number, it is assumed that the remaining host config is be fetched from the parent frame via RPC. In this context, any other values passed along via the iframe URL hash are ignored. One such value is the `group` which is used by the notebook to focus a group and filter only to that groups annotations. This changes the method that merges the configs to allow that `group` value to be taken from the iframe's url and incorporated into the final merged config so that the notebook can set that value in its own store.
-
- 13 Apr, 2021 2 commits
-
-
Eduardo Sanz García authored
-
Eduardo Sanz García authored
Both `SearchClient` and `load-annotations::load` had the same default parameters. We have decided to leave the default parameters only in one place instead of two. This more specific test proves that removing the default parameters in `load-annoationas::load` still uses the default parameters in the `SearchClient`.
-