apollo-mantra
Version:
Tools for integration of apollo with Mantra
51 lines (50 loc) • 2.07 kB
JavaScript
;
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;