diff --git a/Composer/packages/client/src/recoilModel/index.ts b/Composer/packages/client/src/recoilModel/index.ts index 8105c6ee56..b74182652c 100644 --- a/Composer/packages/client/src/recoilModel/index.ts +++ b/Composer/packages/client/src/recoilModel/index.ts @@ -3,4 +3,4 @@ export * from './atoms'; export * from './DispatcherWrapper'; -export * from './selectors/'; +export * from './selectors'; diff --git a/Composer/packages/client/src/recoilModel/selectors/extensions.ts b/Composer/packages/client/src/recoilModel/selectors/extensions.ts new file mode 100644 index 0000000000..6839f16bf8 --- /dev/null +++ b/Composer/packages/client/src/recoilModel/selectors/extensions.ts @@ -0,0 +1,15 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +import { selector } from 'recoil'; + +import { extensionsState } from '../atoms/appState'; + +export const enabledExtensionsSelector = selector({ + key: 'enabledExtensionsSelector', + get: ({ get }) => { + const extensions = get(extensionsState); + + return extensions.filter((e) => e.enabled); + }, +}); diff --git a/Composer/packages/client/src/recoilModel/selectors/index.ts b/Composer/packages/client/src/recoilModel/selectors/index.ts index 2679b02214..5eeee0529e 100644 --- a/Composer/packages/client/src/recoilModel/selectors/index.ts +++ b/Composer/packages/client/src/recoilModel/selectors/index.ts @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. -export * from '../selectors/eject'; -export * from '../selectors/design'; -export * from '../selectors/validatedDialogs'; +export * from './design'; +export * from './eject'; +export * from './extensions'; +export * from './validatedDialogs'; diff --git a/Composer/packages/client/src/utils/hooks.ts b/Composer/packages/client/src/utils/hooks.ts index 6e4aa3a1f3..102486f49e 100644 --- a/Composer/packages/client/src/utils/hooks.ts +++ b/Composer/packages/client/src/utils/hooks.ts @@ -8,8 +8,8 @@ import find from 'lodash/find'; import { useRecoilValue } from 'recoil'; import { ExtensionPageContribution } from '../recoilModel/types'; +import { designPageLocationState, enabledExtensionsSelector, currentProjectIdState } from '../recoilModel'; -import { designPageLocationState, extensionsState, currentProjectIdState } from './../recoilModel'; import { bottomLinks, topLinks } from './pageLinks'; import routerCache from './routerCache'; import { projectIdCache } from './projectCache'; @@ -26,7 +26,7 @@ export const useLocation = () => { export const useLinks = () => { const projectId = useRecoilValue(currentProjectIdState); const designPageLocation = useRecoilValue(designPageLocationState(projectId)); - const extensions = useRecoilValue(extensionsState); + const extensions = useRecoilValue(enabledExtensionsSelector); const openedDialogId = designPageLocation.dialogId || 'Main'; // add page-contributing extensions