import { GroupContentsResource, GroupContentsResourcePrefix } from "services/groups-service/groups-service";
import { updateFavorites } from "store/favorites/favorites-actions";
import { IS_PROJECT_PANEL_TRASHED, getProjectPanelCurrentUuid } from "store/project-panel/project-panel-action";
-import { projectPanelActions } from "store/data-explorer/data-explorer-action";
+import { projectPanelActions } from "store/project-panel/project-panel-action-bind";
import { Dispatch, MiddlewareAPI } from "redux";
import { ProjectResource } from "models/project";
import { updateResources } from "store/resources/resources-actions";
import { selectedFieldsOfGroup } from "models/group";
import { defaultCollectionSelectedFields } from "models/collection";
import { containerRequestFieldsNoMounts } from "models/container-request";
+import { MultiSelectMenuActionNames } from "views-components/multiselect-toolbar/ms-menu-actions";
+import { removeDisabledButton } from "store/multiselect/multiselect-actions";
export class ProjectPanelMiddlewareService extends DataExplorerMiddlewareService {
constructor(private services: ServiceRepository, id: string) {
super(id);
}
- async requestItems(api: MiddlewareAPI<Dispatch, RootState>) {
+ async requestItems(api: MiddlewareAPI<Dispatch, RootState>, criteriaChanged?: boolean, background?: boolean) {
const state = api.getState();
const dataExplorer = getDataExplorer(state.dataExplorer, this.getId());
const projectUuid = getProjectPanelCurrentUuid(state);
api.dispatch(projectPanelDataExplorerIsNotSet());
} else {
try {
- api.dispatch(progressIndicatorActions.START_WORKING(this.getId()));
+ if (!background) { api.dispatch(progressIndicatorActions.START_WORKING(this.getId())); }
const response = await this.services.groupsService.contents(projectUuid, getParams(dataExplorer, !!isProjectTrashed));
const resourceUuids = response.items.map(item => item.uuid);
api.dispatch<any>(updateFavorites(resourceUuids));
rowsPerPage: dataExplorer.rowsPerPage,
})
);
- api.dispatch(couldNotFetchProjectContents());
+ if (e.status === 404) {
+ // It'll just show up as not found
+ }
+ else {
+ api.dispatch(couldNotFetchProjectContents());
+ }
} finally {
- api.dispatch(progressIndicatorActions.PERSIST_STOP_WORKING(this.getId()));
+ if (!background) {
+ api.dispatch(progressIndicatorActions.PERSIST_STOP_WORKING(this.getId()));
+ api.dispatch<any>(removeDisabledButton(MultiSelectMenuActionNames.ADD_TO_TRASH))
+ }
}
}
}
if (sortColumn && sortColumn.sort) {
const sortDirection = sortColumn.sort.direction === SortDirection.ASC ? OrderDirection.ASC : OrderDirection.DESC;
+ // Use createdAt as a secondary sort column so we break ties consistently.
return order
.addOrder(sortDirection, sortColumn.sort.field, GroupContentsResourcePrefix.COLLECTION)
.addOrder(sortDirection, sortColumn.sort.field, GroupContentsResourcePrefix.PROCESS)
.addOrder(sortDirection, sortColumn.sort.field, GroupContentsResourcePrefix.PROJECT)
+ .addOrder(OrderDirection.DESC, "createdAt", GroupContentsResourcePrefix.PROCESS)
.getOrder();
} else {
return order.getOrder();