Merge "Avoid state mutations in build reducers"
This commit is contained in:
commit
e7eae74628
|
@ -12,73 +12,81 @@
|
|||
// License for the specific language governing permissions and limitations
|
||||
// under the License.
|
||||
|
||||
import update from 'immutability-helper'
|
||||
|
||||
import {
|
||||
BUILD_FETCH_FAIL,
|
||||
BUILD_FETCH_REQUEST,
|
||||
BUILD_FETCH_SUCCESS,
|
||||
|
||||
BUILDSET_FETCH_FAIL,
|
||||
BUILDSET_FETCH_REQUEST,
|
||||
BUILDSET_FETCH_SUCCESS,
|
||||
|
||||
BUILD_OUTPUT_FAIL,
|
||||
BUILD_OUTPUT_REQUEST,
|
||||
BUILD_OUTPUT_SUCCESS,
|
||||
|
||||
BUILD_MANIFEST_FAIL,
|
||||
BUILD_MANIFEST_REQUEST,
|
||||
BUILD_MANIFEST_SUCCESS,
|
||||
} from '../actions/build'
|
||||
|
||||
|
||||
export default (state = {
|
||||
isFetching: false,
|
||||
isFetchingOutput: false,
|
||||
isFetchingManifest: false,
|
||||
builds: {},
|
||||
buildsets: {},
|
||||
}, action) => {
|
||||
export default (
|
||||
state = {
|
||||
isFetching: false,
|
||||
isFetchingOutput: false,
|
||||
isFetchingManifest: false,
|
||||
builds: {},
|
||||
buildsets: {},
|
||||
},
|
||||
action
|
||||
) => {
|
||||
switch (action.type) {
|
||||
case BUILD_FETCH_REQUEST:
|
||||
case BUILDSET_FETCH_REQUEST:
|
||||
return update(state, {$merge: {isFetching: true}})
|
||||
case BUILD_FETCH_SUCCESS:
|
||||
state.builds = update(
|
||||
state.builds, {$merge: {[action.buildId]: action.build}})
|
||||
return update(state, {$merge: {isFetching: false}})
|
||||
case BUILDSET_FETCH_SUCCESS:
|
||||
return update(state, {$merge: {
|
||||
isFetching: false,
|
||||
buildsets: update(state.buildsets, {$merge: {
|
||||
[action.buildsetId]: action.buildset}})
|
||||
}})
|
||||
case BUILD_FETCH_FAIL:
|
||||
case BUILDSET_FETCH_FAIL:
|
||||
return update(state, {$merge: {isFetching: false}})
|
||||
|
||||
case BUILD_OUTPUT_REQUEST:
|
||||
return update(state, {$merge: {isFetchingOutput: true}})
|
||||
case BUILD_OUTPUT_SUCCESS:
|
||||
state.builds = update(
|
||||
state.builds, {[action.buildId]: {$merge: {errorIds: action.errorIds,
|
||||
hosts: action.hosts,
|
||||
output: action.output}}})
|
||||
return update(state, {$merge: {isFetchingOutput: false}})
|
||||
case BUILD_OUTPUT_FAIL:
|
||||
return update(state, {$merge: {isFetchingOutput: false}})
|
||||
|
||||
case BUILD_MANIFEST_REQUEST:
|
||||
return update(state, {$merge: {isFetchingManifest: true}})
|
||||
case BUILD_MANIFEST_SUCCESS:
|
||||
state.builds = update(
|
||||
state.builds, {[action.buildId]: {$merge: {manifest: action.manifest}}})
|
||||
return update(state, {$merge: {isFetchingManifest: false}})
|
||||
case BUILD_MANIFEST_FAIL:
|
||||
return update(state, {$merge: {isFetchingManifest: false}})
|
||||
|
||||
default:
|
||||
return state
|
||||
case BUILD_FETCH_REQUEST:
|
||||
case BUILDSET_FETCH_REQUEST:
|
||||
return { ...state, isFetching: true }
|
||||
case BUILD_FETCH_SUCCESS:
|
||||
return {
|
||||
...state,
|
||||
builds: { ...state.builds, [action.buildId]: action.build },
|
||||
isFetching: false,
|
||||
}
|
||||
case BUILDSET_FETCH_SUCCESS:
|
||||
return {
|
||||
...state,
|
||||
buildsets: { ...state.buildsets, [action.buildsetId]: action.buildset },
|
||||
isFetching: false,
|
||||
}
|
||||
case BUILD_FETCH_FAIL:
|
||||
case BUILDSET_FETCH_FAIL:
|
||||
return { ...state, isFetching: false }
|
||||
case BUILD_OUTPUT_REQUEST:
|
||||
return { ...state, isFetchingOutput: true }
|
||||
case BUILD_OUTPUT_SUCCESS: {
|
||||
const buildsWithOutput = {
|
||||
...state.builds,
|
||||
[action.buildId]: {
|
||||
...state.builds[action.buildId],
|
||||
errorIds: action.errorIds,
|
||||
hosts: action.hosts,
|
||||
output: action.output,
|
||||
},
|
||||
}
|
||||
return { ...state, builds: buildsWithOutput, isFetchingOutput: false }
|
||||
}
|
||||
case BUILD_OUTPUT_FAIL:
|
||||
return { ...state, isFetchingOutput: false }
|
||||
case BUILD_MANIFEST_REQUEST:
|
||||
return { ...state, isFetchingManifest: true }
|
||||
case BUILD_MANIFEST_SUCCESS: {
|
||||
const buildsWithManifest = {
|
||||
...state.builds,
|
||||
[action.buildId]: {
|
||||
...state.builds[action.buildId],
|
||||
manifest: action.manifest,
|
||||
},
|
||||
}
|
||||
return { ...state, builds: buildsWithManifest, isFetchingManifest: false }
|
||||
}
|
||||
case BUILD_MANIFEST_FAIL:
|
||||
return { ...state, isFetchingManifest: false }
|
||||
default:
|
||||
return state
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue