UNPKG

apollo-mantra

Version:

Tools for integration of apollo with Mantra

51 lines (50 loc) 2.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var error_logger_1 = require("./error_logger"); var config_1 = require("./config"); function default_1(_a) { var query = _a.query, name = _a.name, variables = _a.variables, optimisticCallback = _a.optimisticCallback, thenCallback = _a.thenCallback, catchCallback = _a.catchCallback, finalCallback = _a.finalCallback, optimisticResponse = _a.optimisticResponse; return function (dispatch, state) { if (optimisticCallback) { optimisticCallback(dispatch, state); } var optimistic = null; if (optimisticResponse) { if (!name) { throw new Error('apollo-mantra: Please specify mutation name if you want to use optimistic callbacks!'); } optimistic = { __typename: 'Mutation' }; optimistic[name] = optimisticResponse; } config_1.default.apolloClient.mutate({ mutation: query, variables: variables, optimisticResponse: optimistic }).then(function (graphQLResult) { var errors = graphQLResult.errors, data = graphQLResult.data; if (errors) { // showMessage('Error', errors.map((e: any) => e.message).join('\n')); catchCallback(error_logger_1.createError(errors), dispatch, state); } else if (data && thenCallback) { thenCallback(data, dispatch, state); } if (finalCallback) { finalCallback(dispatch, state); } }).catch(function (error) { // showMessage('Error', error.message ? (error.message + error.stack) : error); if (catchCallback) { catchCallback(error, dispatch, state); } else { error_logger_1.log(error); } if (finalCallback) { finalCallback(dispatch, state); } }); return null; }; } exports.default = default_1;