spee.ch/react/reducers/show.js

97 lines
2.8 KiB
JavaScript
Raw Normal View History

import * as actions from 'constants/show_action_types';
2018-02-07 04:00:52 +01:00
import { LOCAL_CHECK, ERROR } from 'constants/asset_display_states';
const initialState = {
request: {
error: null,
type : null,
id : null,
},
2018-02-15 03:02:10 +01:00
requestList : {},
channelList : {},
assetList : {},
displayAsset: {
2018-02-14 01:51:59 +01:00
error : null,
status: LOCAL_CHECK,
},
};
export default function (state = initialState, action) {
switch (action.type) {
2018-02-08 03:41:22 +01:00
// handle request
2018-02-14 02:16:50 +01:00
case actions.REQUEST_UPDATE_ERROR:
return Object.assign({}, state, {
request: Object.assign({}, state.request, {
error: action.data,
}),
});
case actions.CHANNEL_REQUEST_NEW:
case actions.ASSET_REQUEST_NEW:
return Object.assign({}, state, {
request: Object.assign({}, state.request, {
type: action.data.requestType,
id : action.data.requestId,
}),
});
2018-02-14 21:09:57 +01:00
// store requests
case actions.REQUEST_LIST_ADD:
2018-02-07 22:26:07 +01:00
return Object.assign({}, state, {
requestList: Object.assign({}, state.requestList, {
2018-02-07 22:26:07 +01:00
[action.data.id]: {
2018-02-14 21:09:57 +01:00
error: action.data.error,
key : action.data.key,
2018-02-07 22:26:07 +01:00
},
}),
});
2018-02-14 21:09:57 +01:00
// asset data
2018-02-14 02:16:50 +01:00
case actions.ASSET_ADD:
return Object.assign({}, state, {
2018-02-13 05:01:02 +01:00
assetList: Object.assign({}, state.assetList, {
[action.data.id]: {
error : action.data.error,
name : action.data.name,
claimId : action.data.claimId,
shortId : action.data.shortId,
claimData: action.data.claimData,
},
}),
2018-02-08 07:22:17 +01:00
});
2018-02-14 21:09:57 +01:00
// channel data
2018-02-14 02:16:50 +01:00
case actions.CHANNEL_ADD:
return Object.assign({}, state, {
channelList: Object.assign({}, state.channelList, {
[action.data.id]: {
name : action.data.name,
longId : action.data.longId,
shortId : action.data.shortId,
claimsData: action.data.claimsData,
},
}),
});
2018-02-13 05:01:02 +01:00
case actions.CHANNEL_CLAIMS_UPDATE_SUCCESS:
return Object.assign({}, state, {
channelList: Object.assign({}, state.channelList, {
[action.data.channelListId]: Object.assign({}, state.channelList[action.data.channelListId], {
claimsData: action.data.claimsData,
}),
}),
});
2018-02-08 03:41:22 +01:00
// display an asset
case actions.FILE_AVAILABILITY_UPDATE:
return Object.assign({}, state, {
displayAsset: Object.assign({}, state.displayAsset, {
status: action.data,
}),
});
case actions.DISPLAY_ASSET_ERROR:
return Object.assign({}, state, {
displayAsset: Object.assign({}, state.displayAsset, {
error : action.data,
status: ERROR,
}),
});
default:
return state;
}
}