useMetaExtensions tabs wrapped in memo

This commit is contained in:
svetlagasheva 2020-05-04 15:28:50 +03:00
parent ca90487cd8
commit 2d069ec6a6

View file

@ -3,22 +3,24 @@
const React = require('react');
const useMetaExtensions = (metaResources) => {
const tabs = metaResources.filter((metaResource) => metaResource.content.type === 'Ready' && metaResource.content.content.metaExtensions.length > 0 && metaResource.addon !== null)
.map((metaResource) => {
return metaResource.content.content.metaExtensions.map((metaExtension) => {
const tab = {
id: metaExtension.url,
label: metaResource.addon.manifest.name,
logo: metaResource.addon.manifest.logo,
icon: 'ic_addons',
metaExtension: metaExtension,
onClick: () => { setSelected(tab); }
};
return tab;
});
})
.flat(2)
.filter((tab, index, tabs) => tabs.findIndex((_tab) => _tab.id === tab.id) === index);
const tabs = React.useMemo(() => {
return metaResources.filter((metaResource) => metaResource.content.type === 'Ready' && metaResource.content.content.metaExtensions.length > 0 && metaResource.addon !== null)
.map((metaResource) => {
return metaResource.content.content.metaExtensions.map((metaExtension) => {
const tab = {
id: metaExtension.url,
label: metaResource.addon.manifest.name,
logo: metaResource.addon.manifest.logo,
icon: 'ic_addons',
metaExtension: metaExtension,
onClick: () => { setSelected(tab); }
};
return tab;
});
})
.flat(2)
.filter((tab, index, tabs) => tabs.findIndex((_tab) => _tab.id === tab.id) === index);
}, [metaResources]);
const [selected, setSelected] = React.useState(null);
const clearSelected = React.useCallback(() => {
setSelected(null);