Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | 10x 18x 1x 18x 1x 18x 2x 2x 2x 18x 5x 5x 5x 18x 18x 18x 18x 18x 18x 18x 11x | // @flow import type {Pattern, Action, ArrayActionType} from '../types'; type ArrayAction = Action<ArrayActionType>; export default class ArrayPattern implements Pattern<ArrayAction> { actions: Array<ArrayAction>; constructor() { this.actions = []; } removeAllActionIfDeleteAfterCreate = () => { if (this.actions.length >= 2 && this.actions[0].type === 'CREATE_ARRAY' && this.actions.slice(-1)[0].type === 'DELETE_ARRAY' ) { this.actions = []; } } removeAllUpdateBeforeDelete = () => { if (this.actions.length >= 2 && this.actions[0].type !== 'CREATE_ARRAY' && this.actions.slice(-1)[0].type === 'DELETE_ARRAY' ) { this.actions = this.actions.slice(-1); } } mergeAllUpdate = () => { if (this.actions.length >= 2 && this.actions[0].type === 'UPDATE_ARRAY' && this.actions.slice(-1)[0].type === 'UPDATE_ARRAY' ) { this.actions = [this.actions.reduce((result: Object, action: ArrayAction) => { result.payload.value = {...result.payload.value, ...action.payload.value}; return result; })]; } } mergeUpdateAndCreate = () => { if (this.actions.length >= 2 && this.actions[0].type === 'CREATE_ARRAY' && this.actions.slice(-1)[0].type === 'UPDATE_ARRAY' ) { this.actions = [this.actions.reduce((result: Object, action: ArrayAction) => { result.payload.value = {...result.payload.value, ...action.payload.value}; return result; })]; } } addAction = (action: ArrayAction) => { this.actions.push(action); this.mergeAction(); } mergeAction = (): Array<ArrayAction> => { this.removeAllActionIfDeleteAfterCreate(); this.removeAllUpdateBeforeDelete(); this.mergeAllUpdate(); this.mergeUpdateAndCreate(); return this.actions; } getActions = (): Array<ArrayAction> => { return this.actions; } } |