X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/3eda00155a3d816c7e65632c7da9896ffb04faae..5729de6b47d3e1bf40f4b2869ffcc6fbf88d0085:/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 f83b0646..3404b375 100644 --- a/src/store/data-explorer/data-explorer-middleware.ts +++ b/src/store/data-explorer/data-explorer-middleware.ts @@ -16,98 +16,98 @@ import { DataExplorerMiddlewareService } from './data-explorer-middleware-servic export const dataExplorerMiddleware = (service: DataExplorerMiddlewareService): Middleware => - (api) => - (next) => { - const actions = bindDataExplorerActions(service.getId()); + (api) => + (next) => { + const actions = bindDataExplorerActions(service.getId()); - return (action) => { - const handleAction = - (handler: (data: T) => void) => - (data: T) => { - next(action); - if (data.id === service.getId()) { - handler(data); - } - }; - dataExplorerActions.match(action, { - SET_PAGE: handleAction(() => { - api.dispatch(actions.REQUEST_ITEMS(false)); - }), - SET_ROWS_PER_PAGE: handleAction(() => { - api.dispatch(actions.REQUEST_ITEMS(true)); - }), - SET_FILTERS: handleAction(() => { - api.dispatch(actions.RESET_PAGINATION()); - api.dispatch(actions.REQUEST_ITEMS(true)); - }), - TOGGLE_SORT: handleAction(() => { - api.dispatch(actions.REQUEST_ITEMS(true)); - }), - SET_EXPLORER_SEARCH_VALUE: handleAction(() => { - api.dispatch(actions.RESET_PAGINATION()); - api.dispatch(actions.REQUEST_ITEMS(true)); - }), - REQUEST_ITEMS: handleAction(({ criteriaChanged }) => { - api.dispatch(async ( - dispatch: Dispatch, - getState: () => RootState, - services: ServiceRepository - ) => { - while (true) { - let de = getDataExplorer( - getState().dataExplorer, - service.getId() - ); - switch (de.requestState) { - case DataTableRequestState.IDLE: - // Start a new request. - try { - dispatch( - actions.SET_REQUEST_STATE({ - requestState: DataTableRequestState.PENDING, - }) - ); - await service.requestItems(api, criteriaChanged); - } catch { - dispatch( - actions.SET_REQUEST_STATE({ - requestState: DataTableRequestState.NEED_REFRESH, - }) - ); - } - // Now check if the state is still PENDING, if it moved to NEED_REFRESH - // then we need to reissue requestItems - de = getDataExplorer( + return (action) => { + const handleAction = + (handler: (data: T) => void) => + (data: T) => { + next(action); + if (data.id === service.getId()) { + handler(data); + } + }; + dataExplorerActions.match(action, { + SET_PAGE: handleAction(() => { + api.dispatch(actions.REQUEST_ITEMS(false)); + }), + SET_ROWS_PER_PAGE: handleAction(() => { + api.dispatch(actions.REQUEST_ITEMS(true)); + }), + SET_FILTERS: handleAction(() => { + api.dispatch(actions.RESET_PAGINATION()); + api.dispatch(actions.REQUEST_ITEMS(true)); + }), + TOGGLE_SORT: handleAction(() => { + api.dispatch(actions.REQUEST_ITEMS(true)); + }), + SET_EXPLORER_SEARCH_VALUE: handleAction(() => { + api.dispatch(actions.RESET_PAGINATION()); + api.dispatch(actions.REQUEST_ITEMS(true)); + }), + REQUEST_ITEMS: handleAction(({ criteriaChanged, background }) => { + api.dispatch(async ( + dispatch: Dispatch, + getState: () => RootState, + services: ServiceRepository + ) => { + while (true) { + let de = getDataExplorer( getState().dataExplorer, service.getId() ); - const complete = - de.requestState === DataTableRequestState.PENDING; - dispatch( - actions.SET_REQUEST_STATE({ - requestState: DataTableRequestState.IDLE, - }) - ); - if (complete) { - return; + switch (de.requestState) { + case DataTableRequestState.IDLE: + // Start a new request. + try { + dispatch( + actions.SET_REQUEST_STATE({ + requestState: DataTableRequestState.PENDING, + }) + ); + await service.requestItems(api, criteriaChanged, background); + } catch { + dispatch( + actions.SET_REQUEST_STATE({ + requestState: DataTableRequestState.NEED_REFRESH, + }) + ); + } + // Now check if the state is still PENDING, if it moved to NEED_REFRESH + // then we need to reissue requestItems + de = getDataExplorer( + getState().dataExplorer, + service.getId() + ); + const complete = + de.requestState === DataTableRequestState.PENDING; + dispatch( + actions.SET_REQUEST_STATE({ + requestState: DataTableRequestState.IDLE, + }) + ); + if (complete) { + return; + } + break; + case DataTableRequestState.PENDING: + // State is PENDING, move it to NEED_REFRESH so that when the current request finishes it starts a new one. + dispatch( + actions.SET_REQUEST_STATE({ + requestState: DataTableRequestState.NEED_REFRESH, + }) + ); + return; + case DataTableRequestState.NEED_REFRESH: + // Nothing to do right now. + return; } - break; - case DataTableRequestState.PENDING: - // State is PENDING, move it to NEED_REFRESH so that when the current request finishes it starts a new one. - dispatch( - actions.SET_REQUEST_STATE({ - requestState: DataTableRequestState.NEED_REFRESH, - }) - ); - return; - case DataTableRequestState.NEED_REFRESH: - // Nothing to do right now. - return; - } - } + } + }); + }), + default: () => next(action), }); - }), - default: () => next(action), - }); - }; - }; + }; + };