Merge branch '15803-unsetup' refs #15803
authorPeter Amstutz <pamstutz@veritasgenetics.com>
Wed, 27 Nov 2019 20:32:39 +0000 (15:32 -0500)
committerPeter Amstutz <pamstutz@veritasgenetics.com>
Wed, 27 Nov 2019 20:32:39 +0000 (15:32 -0500)
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz@veritasgenetics.com>

1  2 
src/store/store.ts
src/store/tree-picker/tree-picker-actions.ts

diff --combined src/store/store.ts
index 2e27a56f74ce1c09cb607a449d313532fee12731,7e69a72873daa26e9ce1dc26d2154906f96fdb0c..76a3b7e4398e3d38a84dfc3623b82bfd9eb8f0ed
@@@ -8,7 -8,7 +8,7 @@@ import thunkMiddleware from 'redux-thun
  import { History } from "history";
  
  import { authReducer } from "./auth/auth-reducer";
- import { configReducer } from "./config/config-reducer";
+ import { authMiddleware } from "./auth/auth-middleware";
  import { dataExplorerReducer } from './data-explorer/data-explorer-reducer';
  import { detailsPanelReducer } from './details-panel/details-panel-reducer';
  import { contextMenuReducer } from './context-menu/context-menu-reducer';
@@@ -27,7 -27,6 +27,6 @@@ import { ServiceRepository } from "~/se
  import { treePickerReducer } from './tree-picker/tree-picker-reducer';
  import { resourcesReducer } from '~/store/resources/resources-reducer';
  import { propertiesReducer } from './properties/properties-reducer';
- import { RootState } from './store';
  import { fileUploaderReducer } from './file-uploader/file-uploader-reducer';
  import { TrashPanelMiddlewareService } from "~/store/trash-panel/trash-panel-middleware-service";
  import { TRASH_PANEL_ID } from "~/store/trash-panel/trash-panel-action";
@@@ -43,6 -42,7 +42,6 @@@ import { appInfoReducer } from '~/store
  import { searchBarReducer } from './search-bar/search-bar-reducer';
  import { SEARCH_RESULTS_PANEL_ID } from '~/store/search-results-panel/search-results-panel-actions';
  import { SearchResultsMiddlewareService } from './search-results-panel/search-results-middleware-service';
 -import { resourcesDataReducer } from "~/store/resources-data/resources-data-reducer";
  import { virtualMachinesReducer } from "~/store/virtual-machines/virtual-machines-reducer";
  import { repositoriesReducer } from '~/store/repositories/repositories-reducer';
  import { keepServicesReducer } from '~/store/keep-services/keep-services-reducer';
@@@ -125,6 -125,7 +124,7 @@@ export function configureStore(history
      const middlewares: Middleware[] = [
          routerMiddleware(history),
          thunkMiddleware.withExtraArgument(services),
+         authMiddleware(services),
          projectPanelMiddleware,
          favoritePanelMiddleware,
          trashPanelMiddleware,
  
  const createRootReducer = (services: ServiceRepository) => combineReducers({
      auth: authReducer(services),
-     config: configReducer,
      collectionPanel: collectionPanelReducer,
      collectionPanelFiles: collectionPanelFilesReducer,
      contextMenu: contextMenuReducer,
      processLogsPanel: processLogsPanelReducer,
      properties: propertiesReducer,
      resources: resourcesReducer,
 -    resourcesData: resourcesDataReducer,
      router: routerReducer,
      snackbar: snackbarReducer,
      treePicker: treePickerReducer,
index 1ec49141e36b8043d2c607ef510132a0dc85ddbe,7229bf63381d0f3935b6a56ea52beeed773e478d..ff36e3e68b855d37a0b670d8331521fec7f2d801
@@@ -4,9 -4,9 +4,10 @@@
  
  import { unionize, ofType, UnionOf } from "~/common/unionize";
  import { TreeNode, initTreeNode, getNodeDescendants, TreeNodeStatus, getNode, TreePickerId, Tree } from '~/models/tree';
 +import { createCollectionFilesTree } from "~/models/collection-file";
  import { Dispatch } from 'redux';
  import { RootState } from '~/store/store';
+ import { getUserUuid } from "~/common/getuser";
  import { ServiceRepository } from '~/services/services';
  import { FilterBuilder } from '~/services/api/filter-builder';
  import { pipe, values } from 'lodash/fp';
@@@ -18,8 -18,6 +19,8 @@@ import { OrderBuilder } from '~/service
  import { ProjectResource } from '~/models/project';
  import { mapTree } from '../../models/tree';
  import { LinkResource, LinkClass } from "~/models/link";
 +import { mapTreeValues } from "~/models/tree";
 +import { sortFilesTree } from "~/services/collection-service/collection-service-files-response";
  
  export const treePickerActions = unionize({
      LOAD_TREE_PICKER_NODE: ofType<{ id: string, pickerId: string }>(),
@@@ -142,10 -140,7 +143,10 @@@ export const loadCollection = (id: stri
              const node = getNode(id)(picker);
              if (node && 'kind' in node.value && node.value.kind === ResourceKind.COLLECTION) {
  
 -                const filesTree = await services.collectionService.files(node.value.portableDataHash);
 +                const files = await services.collectionService.files(node.value.portableDataHash);
 +                const tree = createCollectionFilesTree(files);
 +                const sorted = sortFilesTree(tree);
 +                const filesTree = mapTreeValues(services.collectionService.extendFileURL)(sorted);
  
                  dispatch(
                      treePickerActions.APPEND_TREE_PICKER_NODE_SUBTREE({
  
  export const initUserProject = (pickerId: string) =>
      async (dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
-         const uuid = services.authService.getUuid();
+         const uuid = getUserUuid(getState());
          if (uuid) {
              dispatch(receiveTreePickerData({
                  id: '',
      };
  export const loadUserProject = (pickerId: string, includeCollections = false, includeFiles = false) =>
      async (dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
-         const uuid = services.authService.getUuid();
+         const uuid = getUserUuid(getState());
          if (uuid) {
              dispatch(loadProject({ id: uuid, pickerId, includeCollections, includeFiles }));
          }
@@@ -238,9 -233,8 +239,8 @@@ interface LoadFavoritesProjectParams 
  export const loadFavoritesProject = (params: LoadFavoritesProjectParams) =>
      async (dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
          const { pickerId, includeCollections = false, includeFiles = false } = params;
-         const uuid = services.authService.getUuid();
+         const uuid = getUserUuid(getState());
          if (uuid) {
              const filters = pipe(
                  (fb: FilterBuilder) => includeCollections
                      ? fb.addIsA('headUuid', [ResourceKind.PROJECT, ResourceKind.COLLECTION])
  export const loadPublicFavoritesProject = (params: LoadFavoritesProjectParams) =>
      async (dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
          const { pickerId, includeCollections = false, includeFiles = false } = params;
-         const uuidPrefix = getState().config.uuidPrefix;
+         const uuidPrefix = getState().auth.config.uuidPrefix;
          const uuid = `${uuidPrefix}-j7d0g-fffffffffffffff`;
          if (uuid) {
  
@@@ -319,7 -313,8 +319,8 @@@ export const loadProjectTreePickerProje
      async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
          dispatch(treePickerActions.LOAD_TREE_PICKER_NODE({ id, pickerId: TreePickerId.PROJECTS }));
  
-         const ownerUuid = id.length === 0 ? services.authService.getUuid() || '' : id;
+         const ownerUuid = id.length === 0 ? getUserUuid(getState()) || '' : id;
          const { items } = await services.projectService.list(buildParams(ownerUuid));
  
          dispatch<any>(receiveTreePickerProjectsData(id, items, TreePickerId.PROJECTS));
  
  export const loadFavoriteTreePickerProjects = (id: string) =>
      async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
-         const parentId = services.authService.getUuid() || '';
+         const parentId = getUserUuid(getState()) || '';
  
          if (id === '') {
              dispatch(treePickerActions.LOAD_TREE_PICKER_NODE({ id: parentId, pickerId: TreePickerId.FAVORITES }));
  
  export const loadPublicFavoriteTreePickerProjects = (id: string) =>
      async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
-         const parentId = services.authService.getUuid() || '';
+         const parentId = getUserUuid(getState()) || '';
  
          if (id === '') {
              dispatch(treePickerActions.LOAD_TREE_PICKER_NODE({ id: parentId, pickerId: TreePickerId.PUBLIC_FAVORITES }));
@@@ -366,4 -361,4 +367,4 @@@ const buildParams = (ownerUuid: string
              .addAsc('name')
              .getOrder()
      };
- };
+ };