X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/6d13a683ff5ce887bfd4c20b0bdbd18298dd86b2..010156ef2c2c6977b9ad67fc613b369d8b3ae94f:/src/store/data-explorer/data-explorer-middleware.ts diff --git a/src/store/data-explorer/data-explorer-middleware.ts b/src/store/data-explorer/data-explorer-middleware.ts index f299ea130f..e377f3410f 100644 --- a/src/store/data-explorer/data-explorer-middleware.ts +++ b/src/store/data-explorer/data-explorer-middleware.ts @@ -3,41 +3,41 @@ // // SPDX-License-Identifier: AGPL-3.0 -import { Middleware } from "../../../node_modules/redux"; -import { dataExplorerActions } from "./data-explorer-action"; +import { Middleware } from "redux"; +import { dataExplorerActions, bindDataExplorerActions } from "./data-explorer-action"; import { DataExplorerMiddlewareService } from "./data-explorer-middleware-service"; -export const dataExplorerMiddleware = (dataExplorerService: DataExplorerMiddlewareService): Middleware => api => next => { - dataExplorerService.setApi(api); - next(dataExplorerActions.SET_COLUMNS({ id: dataExplorerService.getId(), columns: dataExplorerService.getColumns() })); +export const dataExplorerMiddleware = (service: DataExplorerMiddlewareService): Middleware => api => next => { + const actions = bindDataExplorerActions(service.getId()); + return action => { const handleAction = (handler: (data: T) => void) => (data: T) => { next(action); - if (data.id === dataExplorerService.getId()) { + if (data.id === service.getId()) { handler(data); } }; dataExplorerActions.match(action, { SET_PAGE: handleAction(() => { - api.dispatch(dataExplorerActions.REQUEST_ITEMS({ id: dataExplorerService.getId() })); + api.dispatch(actions.REQUEST_ITEMS(false)); }), SET_ROWS_PER_PAGE: handleAction(() => { - api.dispatch(dataExplorerActions.REQUEST_ITEMS({ id: dataExplorerService.getId() })); + api.dispatch(actions.REQUEST_ITEMS(true)); }), SET_FILTERS: handleAction(() => { - api.dispatch(dataExplorerActions.RESET_PAGINATION({ id: dataExplorerService.getId() })); - api.dispatch(dataExplorerActions.REQUEST_ITEMS({ id: dataExplorerService.getId() })); + api.dispatch(actions.RESET_PAGINATION()); + api.dispatch(actions.REQUEST_ITEMS(true)); }), TOGGLE_SORT: handleAction(() => { - api.dispatch(dataExplorerActions.REQUEST_ITEMS({ id: dataExplorerService.getId() })); + api.dispatch(actions.REQUEST_ITEMS(true)); }), - SET_SEARCH_VALUE: handleAction(() => { - api.dispatch(dataExplorerActions.RESET_PAGINATION({ id: dataExplorerService.getId() })); - api.dispatch(dataExplorerActions.REQUEST_ITEMS({ id: dataExplorerService.getId() })); + SET_EXPLORER_SEARCH_VALUE: handleAction(() => { + api.dispatch(actions.RESET_PAGINATION()); + api.dispatch(actions.REQUEST_ITEMS(true)); }), - REQUEST_ITEMS: handleAction(() => { - dataExplorerService.requestItems(api); + REQUEST_ITEMS: handleAction(({ criteriaChanged }) => { + service.requestItems(api, criteriaChanged); }), default: () => next(action) });