apollo-client
Version:
A simple yet functional GraphQL client.
47 lines • 1.94 kB
JavaScript
"use strict";
var actions_1 = require('../actions');
var writeToStore_1 = require('./writeToStore');
var assign = require('lodash.assign');
var storeUtils_1 = require('./storeUtils');
function data(previousState, action, queries, mutations, config) {
if (previousState === void 0) { previousState = {}; }
if (actions_1.isQueryResultAction(action)) {
if (!queries[action.queryId]) {
return previousState;
}
if (action.requestId < queries[action.queryId].lastRequestId) {
return previousState;
}
if (!storeUtils_1.graphQLResultHasError(action.result)) {
var queryStoreValue = queries[action.queryId];
var clonedState = assign({}, previousState);
var newState = writeToStore_1.writeSelectionSetToStore({
result: action.result.data,
dataId: queryStoreValue.minimizedQuery.id,
selectionSet: queryStoreValue.minimizedQuery.selectionSet,
variables: queryStoreValue.variables,
store: clonedState,
dataIdFromObject: config.dataIdFromObject,
});
return newState;
}
}
else if (actions_1.isMutationResultAction(action)) {
if (!action.result.errors) {
var queryStoreValue = mutations[action.mutationId];
var clonedState = assign({}, previousState);
var newState = writeToStore_1.writeSelectionSetToStore({
result: action.result.data,
dataId: queryStoreValue.mutation.id,
selectionSet: queryStoreValue.mutation.selectionSet,
variables: queryStoreValue.variables,
store: clonedState,
dataIdFromObject: config.dataIdFromObject,
});
return newState;
}
}
return previousState;
}
exports.data = data;
//# sourceMappingURL=store.js.map