linkService.create = jest.fn().mockReturnValue(Promise.resolve({ uuid: "newUuid" }));
const favoriteService = new FavoriteService(linkService, groupService);
- const newFavorite = await favoriteService.create({ userUuid: "userUuid", resourceUuid: "resourceUuid" });
+ const newFavorite = await favoriteService.create({ userUuid: "userUuid", resource: { uuid: "resourceUuid", name: "resource" } });
expect(linkService.create).toHaveBeenCalledWith({
ownerUuid: "userUuid",
tailUuid: "userUuid",
headUuid: "resourceUuid",
linkClass: LinkClass.STAR,
- name: "resourceUuid"
+ name: "resource"
});
expect(newFavorite.uuid).toEqual("newUuid");
private groupsService: GroupsService
) { }
- create(data: { userUuid: string; resourceUuid: string; }) {
+ create(data: { userUuid: string; resource: { uuid: string; name: string } }) {
return this.linkService.create({
ownerUuid: data.userUuid,
tailUuid: data.userUuid,
- headUuid: data.resourceUuid,
+ headUuid: data.resource.uuid,
linkClass: LinkClass.STAR,
- name: data.resourceUuid
+ name: data.resource.name
});
}
.addEqual("tailUuid", userUuid)
.addEqual("linkClass", LinkClass.STAR)
})
- .then(({items}) => resourceUuids.reduce((results, uuid) => {
+ .then(({ items }) => resourceUuids.reduce((results, uuid) => {
const isFavorite = items.some(item => item.headUuid === uuid);
- return {...results, [uuid]: isFavorite};
+ return { ...results, [uuid]: isFavorite };
}, {}));
}
export interface ContextMenuResource {
uuid: string;
kind: string;
+ name: string;
}
const initialState = {
export type FavoritesAction = UnionOf<typeof favoritesActions>;
-export const toggleFavorite = (resourceUuid: string) =>
+export const toggleFavorite = (resource: { uuid: string; name: string }) =>
(dispatch: Dispatch, getState: () => RootState) => {
const userUuid = getState().auth.user!.uuid;
- dispatch(favoritesActions.TOGGLE_FAVORITE({ resourceUuid }));
- const isFavorite = checkFavorite(resourceUuid, getState().favorites);
+ dispatch(favoritesActions.TOGGLE_FAVORITE({ resourceUuid: resource.uuid }));
+ const isFavorite = checkFavorite(resource.uuid, getState().favorites);
const promise = isFavorite
- ? favoriteService.delete({ userUuid, resourceUuid })
- : favoriteService.create({ userUuid, resourceUuid });
+ ? favoriteService.delete({ userUuid, resourceUuid: resource.uuid })
+ : favoriteService.create({ userUuid, resource });
promise
.then(fav => {
- dispatch(favoritesActions.UPDATE_FAVORITES({ [resourceUuid]: !isFavorite }));
+ dispatch(favoritesActions.UPDATE_FAVORITES({ [resource.uuid]: !isFavorite }));
});
};
}, {
component: ToggleFavoriteAction,
execute: (dispatch, resource) => {
- dispatch<any>(toggleFavorite(resource.uuid));
+ dispatch<any>(toggleFavorite(resource));
}
}]];
export const resourceActionSet: ContextMenuActionSet = [[{
component: ToggleFavoriteAction,
execute: (dispatch, resource) => {
- dispatch<any>(toggleFavorite(resource.uuid));
+ dispatch<any>(toggleFavorite(resource));
}
}]];
toggleOpen={this.toggleSidePanelOpen}
toggleActive={this.toggleSidePanelActive}
sidePanelItems={this.props.sidePanelItems}
- onContextMenu={(event) => this.openContextMenu(event, authService.getUuid() || "", ContextMenuKind.RootProject)}>
+ onContextMenu={(event) => this.openContextMenu(event, {
+ uuid: authService.getUuid() || "",
+ name: "",
+ kind: ContextMenuKind.RootProject
+ })}>
<ProjectTree
projects={this.props.projects}
toggleOpen={itemId => this.props.dispatch<any>(setProjectItem(itemId, ItemMode.OPEN))}
- onContextMenu={(event, item) => this.openContextMenu(event, item.data.uuid, ContextMenuKind.Project)}
+ onContextMenu={(event, item) => this.openContextMenu(event, {
+ uuid: item.data.uuid,
+ name: item.data.name,
+ kind: ContextMenuKind.Project
+ })}
toggleActive={itemId => {
this.props.dispatch<any>(setProjectItem(itemId, ItemMode.ACTIVE));
this.props.dispatch<any>(loadDetails(itemId, ResourceKind.Project));
onItemRouteChange={itemId => this.props.dispatch<any>(setProjectItem(itemId, ItemMode.ACTIVE))}
onContextMenu={(event, item) => {
const kind = item.kind === ResourceKind.Project ? ContextMenuKind.Project : ContextMenuKind.Resource;
- this.openContextMenu(event, item.uuid, kind);
+ this.openContextMenu(event, {
+ uuid: item.uuid,
+ name: item.name,
+ kind
+ });
}}
onDialogOpen={this.handleCreationDialogOpen}
onItemClick={item => {
this.props.dispatch(detailsPanelActions.TOGGLE_DETAILS_PANEL());
},
onContextMenu: (event: React.MouseEvent<HTMLElement>, breadcrumb: NavBreadcrumb) => {
- this.openContextMenu(event, breadcrumb.itemId, ContextMenuKind.Project);
+ this.openContextMenu(event, {
+ uuid: breadcrumb.itemId,
+ name: breadcrumb.label,
+ kind: ContextMenuKind.Project
+ });
}
};
this.props.dispatch(projectActions.OPEN_PROJECT_CREATOR({ ownerUuid: itemUuid }));
}
- openContextMenu = (event: React.MouseEvent<HTMLElement>, itemUuid: string, kind: ContextMenuKind) => {
+ openContextMenu = (event: React.MouseEvent<HTMLElement>, resource: { name: string; uuid: string; kind: ContextMenuKind; }) => {
event.preventDefault();
this.props.dispatch(
contextMenuActions.OPEN_CONTEXT_MENU({
position: { x: event.clientX, y: event.clientY },
- resource: { uuid: itemUuid, kind }
+ resource
})
);
}