From a4c5361c0ed8daf7e1b81fb56a842e9c585c003e Mon Sep 17 00:00:00 2001 From: Marcus Eide Date: Fri, 30 Apr 2021 09:42:08 +0200 Subject: [PATCH] Use storageApi.forBucket and add back a default implementation in the plugin Signed-off-by: Marcus Eide --- packages/app/src/apis.ts | 14 -------------- plugins/shortcuts/README.md | 17 +++++++---------- plugins/shortcuts/src/plugin.ts | 16 +++++++++++++++- 3 files changed, 22 insertions(+), 25 deletions(-) diff --git a/packages/app/src/apis.ts b/packages/app/src/apis.ts index 6e643193db..ccc576e727 100644 --- a/packages/app/src/apis.ts +++ b/packages/app/src/apis.ts @@ -20,7 +20,6 @@ import { createApiFactory, errorApiRef, githubAuthApiRef, - WebStorage, } from '@backstage/core'; import { ScmIntegrationsApi, @@ -34,10 +33,6 @@ import { graphQlBrowseApiRef, GraphQLEndpoints, } from '@backstage/plugin-graphiql'; -import { - LocalStoredShortcuts, - shortcutsApiRef, -} from '@backstage/plugin-shortcuts'; export const apis: AnyApiFactory[] = [ createApiFactory({ @@ -66,13 +61,4 @@ export const apis: AnyApiFactory[] = [ }), createApiFactory(costInsightsApiRef, new ExampleCostInsightsClient()), - - createApiFactory({ - api: shortcutsApiRef, - deps: { errorApi: errorApiRef }, - factory: ({ errorApi }) => - new LocalStoredShortcuts( - WebStorage.create({ namespace: '@backstage/shortcuts', errorApi }), - ), - }), ]; diff --git a/plugins/shortcuts/README.md b/plugins/shortcuts/README.md index 2848ece0e8..dfe8577190 100644 --- a/plugins/shortcuts/README.md +++ b/plugins/shortcuts/README.md @@ -17,23 +17,20 @@ import { Shortcuts } from '@backstage/plugin-shortcuts'; ; ``` -The plugin exports a `shortcutApiRef` and an implementation of the `ShortcutApi` that uses `localStorage` for storage, that you can use to get started quickly. To use it add it to your app's `apis.ts`: +The plugin exports a `shortcutApiRef` but the plugin includes a default implementation of the `ShortcutApi` that uses `localStorage` to store each users shortcuts. + +To overwrite the default implementation add it to the App's `apis.ts`: ```ts -import { - LocalStoredShortcuts, - shortcutsApiRef, -} from '@backstage/plugin-shortcuts'; +import { shortcutsApiRef } from '@backstage/plugin-shortcuts'; +import { CustomShortcutsImpl } from '...'; export const apis = [ // ... createApiFactory({ api: shortcutsApiRef, - deps: { errorApi: errorApiRef }, - factory: ({ errorApi }) => - new LocalStoredShortcuts( - WebStorage.create({ namespace: '@backstage/shortcuts', errorApi }), - ), + deps: {}, + factory: () => new CustomShortcutsImpl(), }), ]; ``` diff --git a/plugins/shortcuts/src/plugin.ts b/plugins/shortcuts/src/plugin.ts index b81062505a..e2cd819fc6 100644 --- a/plugins/shortcuts/src/plugin.ts +++ b/plugins/shortcuts/src/plugin.ts @@ -14,10 +14,24 @@ * limitations under the License. */ -import { createComponentExtension, createPlugin } from '@backstage/core'; +import { + createApiFactory, + createComponentExtension, + createPlugin, + storageApiRef, +} from '@backstage/core'; +import { LocalStoredShortcuts, shortcutsApiRef } from './api'; export const shortcutsPlugin = createPlugin({ id: 'shortcuts', + apis: [ + createApiFactory({ + api: shortcutsApiRef, + deps: { storageApi: storageApiRef }, + factory: ({ storageApi }) => + new LocalStoredShortcuts(storageApi.forBucket('shortcuts')), + }), + ], }); export const Shortcuts = shortcutsPlugin.provide(