spee.ch/react/reducers/index.js

81 lines
1.9 KiB
JavaScript
Raw Normal View History

2018-01-16 20:38:37 +01:00
import * as actions from '../constants/action_types';
2018-01-09 02:06:31 +01:00
const initialState = {
2018-01-10 03:25:38 +01:00
loggedInChannel: {
name : null,
shortId: null,
longId : null,
},
2018-01-10 20:26:01 +01:00
publishInChannel: false,
2018-01-12 00:37:32 +01:00
status : {
status : null,
message: null,
},
error: {
file : null,
url : null,
publishSubmit: null,
},
2018-01-12 00:37:32 +01:00
file : null,
claim : '',
metadata: {
title : '',
thumbnail : '',
description: '',
license : '',
2018-01-10 22:10:08 +01:00
nsfw : false,
},
2018-01-09 02:06:31 +01:00
};
/*
Reducers describe how the application's state changes in response to actions
*/
export default function (state = initialState, action) {
switch (action.type) {
2018-01-16 20:38:37 +01:00
case actions.FILE_SELECTED:
2018-01-09 02:06:31 +01:00
return Object.assign({}, state, {
file: action.file,
2018-01-09 02:06:31 +01:00
});
2018-01-16 20:38:37 +01:00
case actions.FILE_CLEAR:
2018-01-09 02:06:31 +01:00
return initialState;
2018-01-16 20:38:37 +01:00
case actions.METADATA_UPDATE:
return Object.assign({}, state, {
2018-01-10 22:10:08 +01:00
metadata: Object.assign({}, state.metadata, {
[action.name]: action.value,
2018-01-10 22:10:08 +01:00
}),
2018-01-10 03:25:38 +01:00
});
2018-01-16 20:38:37 +01:00
case actions.CLAIM_UPDATE:
2018-01-10 03:25:38 +01:00
return Object.assign({}, state, {
claim: action.value,
});
2018-01-16 20:38:37 +01:00
case actions.CHANNEL_UPDATE:
2018-01-10 03:25:38 +01:00
return Object.assign({}, state, {
loggedInChannel: {
name : action.name,
shortId: action.shortId,
longId : action.longId,
},
});
2018-01-16 20:38:37 +01:00
case actions.SET_PUBLISH_IN_CHANNEL:
2018-01-10 03:25:38 +01:00
return Object.assign({}, state, {
2018-01-11 21:51:38 +01:00
publishInChannel: action.channel,
2018-01-10 03:25:38 +01:00
});
2018-01-16 20:38:37 +01:00
case actions.PUBLISH_STATUS_UPDATE:
2018-01-11 21:51:38 +01:00
return Object.assign({}, state, {
status: Object.assign({}, state.status, {
2018-01-12 00:37:32 +01:00
status : action.status,
message: action.message,
}),
});
2018-01-16 20:38:37 +01:00
case actions.ERROR_UPDATE:
return Object.assign({}, state, {
error: Object.assign({}, state.error, {
[action.name]: action.value,
}),
});
2018-01-09 02:06:31 +01:00
default:
return state;
}
}