UNPKG

1.85 kBJavaScriptView Raw
1"use strict";
2var actions_1 = require('../actions');
3var store_1 = require('../data/store');
4var store_2 = require('../store');
5var assign = require('lodash.assign');
6var pick = require('lodash.pick');
7var optimisticDefaultState = [];
8function optimistic(previousState, action, store, config) {
9 if (previousState === void 0) { previousState = optimisticDefaultState; }
10 if (actions_1.isMutationInitAction(action) && action.optimisticResponse) {
11 var fakeMutationResultAction = {
12 type: 'APOLLO_MUTATION_RESULT',
13 result: { data: action.optimisticResponse },
14 mutationId: action.mutationId,
15 resultBehaviors: action.resultBehaviors,
16 };
17 var fakeStore = assign({}, store, { optimistic: previousState });
18 var optimisticData_1 = store_2.getDataWithOptimisticResults(fakeStore);
19 var fakeDataResultState_1 = store_1.data(optimisticData_1, fakeMutationResultAction, store.queries, store.mutations, config);
20 var changedKeys = Object.keys(fakeDataResultState_1).filter(function (key) { return optimisticData_1[key] !== fakeDataResultState_1[key]; });
21 var patch = pick(fakeDataResultState_1, changedKeys);
22 var optimisticState = {
23 data: patch,
24 mutationId: action.mutationId,
25 };
26 var newState = previousState.concat([optimisticState]);
27 return newState;
28 }
29 else if ((actions_1.isMutationErrorAction(action) || actions_1.isMutationResultAction(action))
30 && previousState.some(function (change) { return change.mutationId === action.mutationId; })) {
31 var newState = previousState.filter(function (change) { return change.mutationId !== action.mutationId; });
32 return newState;
33 }
34 return previousState;
35}
36exports.optimistic = optimistic;
37//# sourceMappingURL=store.js.map
\No newline at end of file