soapbox/app/gabsocial/actions/me.js

80 wiersze
1.7 KiB
JavaScript

import api from '../api';
import { importFetchedAccount } from './importer';
export const ME_FETCH_REQUEST = 'ME_FETCH_REQUEST';
export const ME_FETCH_SUCCESS = 'ME_FETCH_SUCCESS';
export const ME_FETCH_FAIL = 'ME_FETCH_FAIL';
export const ME_FETCH_SKIP = 'ME_FETCH_SKIP';
export const ME_PATCH_REQUEST = 'ME_PATCH_REQUEST';
export const ME_PATCH_FAIL = 'ME_PATCH_FAIL';
const hasToken = getState => getState().hasIn(['auth', 'user', 'access_token']);
const noOp = () => new Promise(f => f());
export function fetchMe() {
return (dispatch, getState) => {
if (!hasToken(getState)) {
dispatch({ type: ME_FETCH_SKIP }); return noOp();
};
dispatch(fetchMeRequest());
return api(getState).get('/api/v1/accounts/verify_credentials').then(response => {
dispatch(fetchMeSuccess(response.data));
}).catch(error => {
dispatch(fetchMeFail(error));
});
};
}
export function patchMe(params) {
return (dispatch, getState) => {
dispatch(patchMeRequest());
return api(getState)
.patch('/api/v1/accounts/update_credentials', params)
.then(response => {
dispatch(fetchMeSuccess(response.data));
}).catch(error => {
dispatch(patchMeFail(error));
});
};
}
export function fetchMeRequest() {
return {
type: ME_FETCH_REQUEST,
};
}
export function fetchMeSuccess(me) {
return (dispatch, getState) => {
dispatch(importFetchedAccount(me));
dispatch({
type: ME_FETCH_SUCCESS,
me,
});
};
}
export function fetchMeFail(error) {
return {
type: ME_FETCH_FAIL,
error,
};
};
export function patchMeRequest() {
return {
type: ME_PATCH_REQUEST,
};
}
export function patchMeFail(error) {
return {
type: ME_PATCH_FAIL,
error,
};
};