insomnia/app/redux/modules/requests.js

74 lines
1.7 KiB
JavaScript
Raw Normal View History

import {combineReducers} from 'redux'
import * as network from '../../lib/network'
2016-04-23 06:16:23 +00:00
import {show} from './modals'
import {MODAL_REQUEST_RENAME} from '../../lib/constants'
2016-04-23 06:08:52 +00:00
export const REQUEST_CHANGE_FILTER = 'requests/filter';
export const REQUEST_SEND_START = 'requests/start';
export const REQUEST_SEND_STOP = 'requests/stop';
2016-04-23 06:08:52 +00:00
2016-04-23 06:08:52 +00:00
// ~~~~~~~~ //
// REDUCERS //
// ~~~~~~~~ //
function filterReducer(state = '', action) {
2016-04-23 06:08:52 +00:00
switch (action.type) {
2016-04-23 06:08:52 +00:00
case REQUEST_CHANGE_FILTER:
const filter = action.filter;
return Object.assign({}, state, {filter});
default:
return state;
}
}
function loadingRequestsReducer(state = {}, action) {
let loadingRequests;
switch (action.type) {
case REQUEST_SEND_START:
loadingRequests = Object.assign({}, state.loadingRequests);
loadingRequests[action.requestId] = true;
return Object.assign({}, state, {loadingRequests})
case REQUEST_SEND_STOP:
loadingRequests = Object.assign({}, state.loadingRequests);
delete loadingRequests[action.requestId];
return Object.assign({}, state, {loadingRequests})
2016-04-23 06:08:52 +00:00
default:
return state;
}
}
export default combineReducers({
filter: filterReducer,
loadingRequests: loadingRequestsReducer
});
2016-04-23 06:08:52 +00:00
// ~~~~~~~ //
// ACTIONS //
// ~~~~~~~ //
export function changeFilter(filter) {
2016-04-23 06:08:52 +00:00
return {type: REQUEST_CHANGE_FILTER, filter};
}
export function send(request) {
2016-04-23 06:08:52 +00:00
return dispatch => {
dispatch({type: REQUEST_SEND_START, requestId: request._id});
2016-04-23 06:08:52 +00:00
2016-04-29 08:15:37 +00:00
network.send(request._id, () => {
dispatch({type: REQUEST_SEND_STOP, requestId: request._id});
2016-04-23 06:08:52 +00:00
});
}
}
export function showUpdateNamePrompt(request) {
2016-04-23 06:08:52 +00:00
const defaultValue = request.name;
return show(MODAL_REQUEST_RENAME, {defaultValue, request});
}