parent
c249ceb10c
commit
2d57bcf1b7
@ -0,0 +1,48 @@ |
|||||||
|
import api from '../api' |
||||||
|
|
||||||
|
export const FOLLOW_CHANGE = 'FOLLOW_CHANGE'; |
||||||
|
export const FOLLOW_SUBMIT = 'FOLLOW_SUBMIT'; |
||||||
|
export const FOLLOW_SUBMIT_REQUEST = 'FOLLOW_SUBMIT_REQUEST'; |
||||||
|
export const FOLLOW_SUBMIT_SUCCESS = 'FOLLOW_SUBMIT_SUCCESS'; |
||||||
|
export const FOLLOW_SUBMIT_FAIL = 'FOLLOW_SUBMIT_FAIL'; |
||||||
|
|
||||||
|
export function followChange(text) { |
||||||
|
return { |
||||||
|
type: FOLLOW_CHANGE, |
||||||
|
text: text |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
export function followSubmit() { |
||||||
|
return function (dispatch, getState) { |
||||||
|
dispatch(followSubmitRequest()); |
||||||
|
|
||||||
|
api(getState).post('/api/follows', { |
||||||
|
uri: getState().getIn(['follow', 'text']) |
||||||
|
}).then(function (response) { |
||||||
|
dispatch(followSubmitSuccess(response.data)); |
||||||
|
}).catch(function (error) { |
||||||
|
dispatch(followSubmitFail(error)); |
||||||
|
}); |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
export function followSubmitRequest() { |
||||||
|
return { |
||||||
|
type: FOLLOW_SUBMIT_REQUEST |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
export function followSubmitSuccess(account) { |
||||||
|
return { |
||||||
|
type: FOLLOW_SUBMIT_SUCCESS, |
||||||
|
account: account |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
export function followSubmitFail(error) { |
||||||
|
return { |
||||||
|
type: FOLLOW_SUBMIT_FAIL, |
||||||
|
error: error |
||||||
|
}; |
||||||
|
} |
@ -0,0 +1,24 @@ |
|||||||
|
import * as constants from '../actions/follow'; |
||||||
|
import Immutable from 'immutable'; |
||||||
|
|
||||||
|
const initialState = Immutable.Map({ |
||||||
|
text: '', |
||||||
|
is_submitting: false |
||||||
|
}); |
||||||
|
|
||||||
|
export default function compose(state = initialState, action) { |
||||||
|
switch(action.type) { |
||||||
|
case constants.FOLLOW_CHANGE: |
||||||
|
return state.set('text', action.text); |
||||||
|
case constants.FOLLOW_SUBMIT_REQUEST: |
||||||
|
return state.set('is_submitting', true); |
||||||
|
case constants.FOLLOW_SUBMIT_SUCCESS: |
||||||
|
return state.withMutations(map => { |
||||||
|
map.set('text', '').set('is_submitting', false); |
||||||
|
}); |
||||||
|
case constants.FOLLOW_SUBMIT_FAIL: |
||||||
|
return state.set('is_submitting', false); |
||||||
|
default: |
||||||
|
return state; |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue