Add refreshing panel list after toggle favorite
authorDaniel Kos <daniel.kos@contractors.roche.com>
Tue, 24 Jul 2018 11:03:54 +0000 (13:03 +0200)
committerDaniel Kos <daniel.kos@contractors.roche.com>
Tue, 24 Jul 2018 11:04:29 +0000 (13:04 +0200)
Feature #13753

Arvados-DCO-1.1-Signed-off-by: Daniel Kos <daniel.kos@contractors.roche.com>

src/index.tsx
src/store/favorites/favorites-actions.ts
src/views-components/context-menu/action-sets/favorite-action-set.ts [new file with mode: 0644]
src/views-components/context-menu/context-menu.tsx
src/views/workbench/workbench.tsx

index caba632c04225f4d7178dd52f469ad7f1269cf7d..7443aeaeba7ddfccdfbe43f31c355ac76d474370 100644 (file)
@@ -23,10 +23,12 @@ import { addMenuActionSet, ContextMenuKind } from "./views-components/context-me
 import { rootProjectActionSet } from "./views-components/context-menu/action-sets/root-project-action-set";
 import { projectActionSet } from "./views-components/context-menu/action-sets/project-action-set";
 import { resourceActionSet } from './views-components/context-menu/action-sets/resource-action-set';
+import { favoriteActionSet } from "./views-components/context-menu/action-sets/favorite-action-set";
 
 addMenuActionSet(ContextMenuKind.RootProject, rootProjectActionSet);
 addMenuActionSet(ContextMenuKind.Project, projectActionSet);
 addMenuActionSet(ContextMenuKind.Resource, resourceActionSet);
+addMenuActionSet(ContextMenuKind.Favorite, favoriteActionSet);
 
 fetchConfig()
     .then(config => {
index 225c9b35c36ce934721c1c10f5cb2883a15e4594..4a176e303c40823ffed69d9e9776a15805724c8a 100644 (file)
@@ -17,7 +17,7 @@ export const favoritesActions = unionize({
 export type FavoritesAction = UnionOf<typeof favoritesActions>;
 
 export const toggleFavorite = (resource: { uuid: string; name: string }) =>
-    (dispatch: Dispatch, getState: () => RootState) => {
+    (dispatch: Dispatch, getState: () => RootState): Promise<any> => {
         const userUuid = getState().auth.user!.uuid;
         dispatch(favoritesActions.TOGGLE_FAVORITE({ resourceUuid: resource.uuid }));
         const isFavorite = checkFavorite(resource.uuid, getState().favorites);
@@ -25,7 +25,7 @@ export const toggleFavorite = (resource: { uuid: string; name: string }) =>
             ? favoriteService.delete({ userUuid, resourceUuid: resource.uuid })
             : favoriteService.create({ userUuid, resource });
 
-        promise
+        return promise
             .then(fav => {
                 dispatch(favoritesActions.UPDATE_FAVORITES({ [resource.uuid]: !isFavorite }));
             });
diff --git a/src/views-components/context-menu/action-sets/favorite-action-set.ts b/src/views-components/context-menu/action-sets/favorite-action-set.ts
new file mode 100644 (file)
index 0000000..807c309
--- /dev/null
@@ -0,0 +1,19 @@
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
+import { ContextMenuActionSet } from "../context-menu-action-set";
+import { ToggleFavoriteAction } from "./favorite-action";
+import { toggleFavorite } from "../../../store/favorites/favorites-actions";
+import { dataExplorerActions } from "../../../store/data-explorer/data-explorer-action";
+import { FAVORITE_PANEL_ID } from "../../../views/favorite-panel/favorite-panel";
+
+export const favoriteActionSet: ContextMenuActionSet = [[{
+    component: ToggleFavoriteAction,
+    execute: (dispatch, resource) => {
+        debugger;
+        dispatch<any>(toggleFavorite(resource)).then(() => {
+            dispatch<any>(dataExplorerActions.REQUEST_ITEMS({ id : FAVORITE_PANEL_ID }));
+        });
+    }
+}]];
index 245fe35e9459106179caaba38e0ef81b6085408c..9b339c624c4ed9c7304bdcc8d62f7a060dd2acbb 100644 (file)
@@ -58,5 +58,6 @@ const getMenuActionSet = (resource?: ContextMenuResource): ContextMenuActionSet
 export enum ContextMenuKind {
     RootProject = "RootProject",
     Project = "Project",
-    Resource = "Resource"
+    Resource = "Resource",
+    Favorite = "Favorite"
 }
index 43033d969eeb8463d46738dfbd147a494bdfe09a..912ab87fd9a63300419e82d3af894b6a890656b3 100644 (file)
@@ -234,11 +234,10 @@ export const Workbench = withStyles(styles)(
             renderFavoritePanel = (props: RouteComponentProps<{ id: string }>) => <FavoritePanel
                 onItemRouteChange={itemId => this.props.dispatch<any>(setFavoriteItem(itemId, ItemMode.ACTIVE))}
                 onContextMenu={(event, item) => {
-                    const kind = item.kind === ResourceKind.Project ? ContextMenuKind.Project : ContextMenuKind.Resource;
                     this.openContextMenu(event, {
                         uuid: item.uuid,
                         name: item.name,
-                        kind,
+                        kind: ContextMenuKind.Favorite,
                     });
                 }}
                 onDialogOpen={this.handleCreationDialogOpen}