type NameableResource = Resource & { name?: string };
export const verifyAndUpdateLink = async (link: LinkResource, dispatch: Dispatch, getState: () => RootState, services: ServiceRepository): Promise<LinkResource> => {
- //check if head resource is already in the store
+ //head resource should already be in the store
let headResource: Resource | undefined = getState().resources[link.headUuid];
//if not, fetch it
if (!headResource) {
};
export const verifyAndUpdateLinks = async (links: LinkResource[], dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
+
const updatedLinks = links.map((link) => verifyAndUpdateLink(link, dispatch, getState, services));
return Promise.all(updatedLinks);
};
verifyAndUpdateLinkNames(unverifiedPubFaves, dispatch, getState, services);
} else if (projectUuid === SidePanelTreeCategory.FAVORITES) {
const unverifiedFaves = await dispatch<any>(loadFavoritesTree());
+ await setFaves(unverifiedFaves, dispatch, getState, services);
verifyAndUpdateLinkNames(unverifiedFaves, dispatch, getState, services);
} else if (node || projectUuid !== '') {
await dispatch<any>(loadProject(projectUuid));
return items;
};
+const setFaves = async(links: LinkResource[], dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
+
+ const responseLinks = await services.linkService.list({
+ filters: new FilterBuilder()
+ .addEqual("link_class", LinkClass.STAR)
+ .addEqual('tail_uuid', getUserUuid(getState()))
+ .addEqual('tail_kind', ResourceKind.USER)
+ .getFilters()
+ }).then(results => results);
+ const uuids = responseLinks.items.map(it => it.headUuid);
+ const groupItems: any = await services.groupsService.list({
+ filters: new FilterBuilder()
+ .addIn("uuid", uuids)
+ .getFilters()
+ });
+ const collectionItems: any = await services.collectionService.list({
+ filters: new FilterBuilder()
+ .addIn("uuid", uuids)
+ .getFilters()
+ });
+ const processItems: any = await services.containerRequestService.list({
+ filters: new FilterBuilder()
+ .addIn("uuid", uuids)
+ .getFilters()
+ });
+ const responseItems = groupItems.items.concat(collectionItems.items).concat(processItems.items);
+
+ //setting resources here so they won't be re-fetched in validation step
+ dispatch(resourcesActions.SET_RESOURCES(responseItems));
+};
+
const verifyAndUpdateLinkNames = async (links: LinkResource[], dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
const verfifiedLinks = await verifyAndUpdateLinks(links, dispatch, getState, services);
})
);
+ //setting resources here so they won't be re-fetched in validation step
+ dispatch(resourcesActions.SET_RESOURCES(responseItems));
+
return filteredItems;
};