diff --git a/Composer/packages/extension-client/src/hooks/__tests__/useMenuConfig.test.tsx b/Composer/packages/extension-client/src/hooks/__tests__/useMenuConfig.test.tsx
index 9fa50c6f35..96fb9b543d 100644
--- a/Composer/packages/extension-client/src/hooks/__tests__/useMenuConfig.test.tsx
+++ b/Composer/packages/extension-client/src/hooks/__tests__/useMenuConfig.test.tsx
@@ -20,9 +20,22 @@ const plugins = {
},
};
+const shellData = {
+ schemas: {
+ sdk: {
+ content: {
+ definitions: {
+ foo: 'foo',
+ bar: 'bar',
+ },
+ },
+ },
+ },
+};
+
const wrapper: React.FC = ({ children }) => (
// @ts-expect-error
- {children}
+ {children}
);
describe('useMenuConfig', () => {
diff --git a/Composer/packages/extension-client/src/hooks/useMenuConfig.ts b/Composer/packages/extension-client/src/hooks/useMenuConfig.ts
index 0d41ffbb26..f51c4909b8 100644
--- a/Composer/packages/extension-client/src/hooks/useMenuConfig.ts
+++ b/Composer/packages/extension-client/src/hooks/useMenuConfig.ts
@@ -8,7 +8,22 @@ import { EditorExtensionContext } from '../EditorExtensionContext';
import { MenuUISchema } from '../types';
export function useMenuConfig(): MenuUISchema {
- const { plugins } = useContext(EditorExtensionContext);
+ const { plugins, shellData } = useContext(EditorExtensionContext);
+ const uiSchema = plugins.uiSchema || {};
+ const sdkSchema = shellData.schemas?.sdk;
+ const sdkDefinitions = sdkSchema?.content?.definitions || {};
- return useMemo(() => mapValues(plugins.uiSchema, 'menu'), [plugins.uiSchema]);
+ return useMemo(() => {
+ const menuSchema = mapValues(uiSchema, 'menu') as MenuUISchema;
+ const implementedMenuSchema = {} as MenuUISchema;
+
+ // Keep those $kinds implemented in both sdk.schema and uischema
+ Object.entries(menuSchema).forEach(([$kind, menuOpt]) => {
+ if (menuOpt && sdkDefinitions[$kind]) {
+ implementedMenuSchema[$kind] = menuOpt;
+ }
+ });
+
+ return implementedMenuSchema;
+ }, [plugins.uiSchema, sdkSchema]);
}