UNPKG

@metacell/geppetto-meta-client

Version:

Geppetto web frontend. Geppetto is an open-source platform to build web-based tools to visualize and simulate neuroscience data and models.

76 lines 2.7 kB
import Resources from '@metacell/geppetto-meta-core/Resources'; import { clientActions, backendActions } from '../actions'; import Manager from '../../common/GeppettoManager'; import EventManager, { callbacksList } from '../../common/EventManager'; import MessageSocket from '../../communication/MessageSocket'; export function callbacksMiddleware(_ref) { var getState = _ref.getState, dispatch = _ref.dispatch; return function (next) { return function (action) { var onError = function onError(payload) { EventManager.geppettoError(payload.message); }; var onGeppettoVersion = function onGeppettoVersion(payload) { var version = payload; var geppettoVersion = Resources.GEPPETTO_VERSION_HOLDER.replace("$1", version); console.log(geppettoVersion); }; var actionTriggered = false; if (callbacksList[action.type] !== undefined && callbacksList[action.type].size > 0) { callbacksList[action.type].forEach(function (item) { item(action); }); } switch (action.type) { case clientActions.PROJECT_LOAD_FROM_ID: MessageSocket.loadProjectFromId(action.data); break; case clientActions.PROJECT_LOAD_FROM_URL: MessageSocket.loadProjectFromUrl(action.data); break; case backendActions.GEPPETTO_VERSION: onGeppettoVersion(action.data); break; case backendActions.IMPORT_TYPE_RESOLVED: Manager.swapResolvedType(action.data); break; case backendActions.IMPORT_VALUE_RESOLVED: Manager.swapResolvedValue(action.data); break; case backendActions.FETCHED: case backendActions.VARIABLE_FETCHED: { Manager.addVariableToModel(action.data); break; } case backendActions.MODEL_LOADED: { console.time(Resources.PARSING_MODEL); Manager.loadModel(action.data); break; } case backendActions.PROJECT_LOADED: { var message = action.data; MessageSocket.projectId = message.project.id; Manager.loadProject(message.project, message.persisted); break; } case backendActions.ERROR_DOWNLOADING_MODEL: case backendActions.ERROR_DOWNLOADING_RESULTS: case backendActions.ERROR_LOADING_PROJECT: case backendActions.ERROR_LOADING_SIM: case backendActions.ERROR: onError(action.data); break; default: break; } if (!actionTriggered) { next(action); } return; }; }; }