import { ResourceKind } from 'models/resource';
import { CategoriesListReducer } from 'common/plugintypes';
import { pluginConfig } from 'plugins';
-import { LinkClass } from 'models/link';
+import { LinkClass, LinkResource } from 'models/link';
+import { verifyAndUpdateLinks } from 'common/link-update-name';
export enum SidePanelTreeCategory {
PROJECTS = 'Home Projects',
PUBLIC_FAVORITES = 'Public Favorites',
SHARED_WITH_ME = 'Shared with me',
ALL_PROCESSES = 'All Processes',
+ INSTANCE_TYPES = 'Instance Types',
SHELL_ACCESS = 'Shell Access',
GROUPS = 'Groups',
TRASH = 'Trash',
SidePanelTreeCategory.PUBLIC_FAVORITES,
SidePanelTreeCategory.SHARED_WITH_ME,
SidePanelTreeCategory.ALL_PROCESSES,
+ SidePanelTreeCategory.INSTANCE_TYPES,
SidePanelTreeCategory.SHELL_ACCESS,
SidePanelTreeCategory.GROUPS,
SidePanelTreeCategory.TRASH
if (projectUuid === SidePanelTreeCategory.PUBLIC_FAVORITES) {
await dispatch<any>(loadPublicFavoritesTree());
} else if (projectUuid === SidePanelTreeCategory.FAVORITES) {
- await dispatch<any>(loadFavoritesTree());
+ const unverifiedLinks = await dispatch<any>(loadFavoritesTree());
+ verifyAndUpdateLinkNames(unverifiedLinks, dispatch, getState, services);
} else if (node || projectUuid !== '') {
await dispatch<any>(loadProject(projectUuid));
}
};
const { items } = await services.projectService.list(params);
-
+
dispatch(treePickerActions.LOAD_TREE_PICKER_NODE_SUCCESS({
id: projectUuid,
pickerId: SIDE_PANEL_TREE,
})
);
- dispatch(resourcesActions.SET_RESOURCES(items));
+ return items;
+};
+
+const verifyAndUpdateLinkNames = async (links: LinkResource[], dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
+ const verfifiedLinks = await verifyAndUpdateLinks(links, dispatch, getState, services);
+
+ dispatch(
+ treePickerActions.LOAD_TREE_PICKER_NODE_SUCCESS({
+ id: SidePanelTreeCategory.FAVORITES,
+ pickerId: SIDE_PANEL_TREE,
+ nodes: verfifiedLinks.map(item => initTreeNode({ id: item.headUuid, value: item })),
+ })
+ );
};
export const loadPublicFavoritesTree = () => async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
limit: SIDEPANEL_TREE_NODE_LIMIT,
};
- const { items } = await services.linkService.list(params);
+ const items = (await services.linkService.list(params)).items;
+
+ const uuids = items.map(it => it.headUuid);
+ const groupItems: any = await services.groupsService.list({
+ filters: new FilterBuilder()
+ .addIn("uuid", uuids)
+ .addIsA("uuid", typeFilters)
+ .getFilters()
+ });
+ const collectionItems: any = await services.collectionService.list({
+ filters: new FilterBuilder()
+ .addIn("uuid", uuids)
+ .addIsA("uuid", typeFilters)
+ .getFilters()
+ });
+ const processItems: any = await services.containerRequestService.list({
+ filters: new FilterBuilder()
+ .addIn("uuid", uuids)
+ .addIsA("uuid", typeFilters)
+ .getFilters()
+ });
+
+ const responseItems = groupItems.items.concat(collectionItems.items).concat(processItems.items);
+
+ const filteredItems = items.filter(item => responseItems.some(responseItem => responseItem.uuid === item.headUuid));
+
+ // for(const item of filteredItems) {
+ // const verifiedName = await verifyAndUpdateLinkName(item, dispatch, getState, services);
+ // item.name = verifiedName;
+ // }
dispatch(
treePickerActions.LOAD_TREE_PICKER_NODE_SUCCESS({
id: SidePanelTreeCategory.PUBLIC_FAVORITES,
pickerId: SIDE_PANEL_TREE,
- nodes: items.map(item => initTreeNode({ id: item.headUuid, value: item })),
+ nodes: filteredItems.map(item => initTreeNode({ id: item.headUuid, value: item })),
})
);
- dispatch(resourcesActions.SET_RESOURCES(items));
+ dispatch(resourcesActions.SET_RESOURCES(responseItems));
};
export const activateSidePanelTreeItem = (id: string) =>