113 lines
3.1 KiB
JavaScript
113 lines
3.1 KiB
JavaScript
import api from '../api';
|
|
import { me } from 'gabsocial/initial_state';
|
|
|
|
export const GROUP_CREATE_REQUEST = 'GROUP_CREATE_REQUEST';
|
|
export const GROUP_CREATE_SUCCESS = 'GROUP_CREATE_SUCCESS';
|
|
export const GROUP_CREATE_FAIL = 'GROUP_CREATE_FAIL';
|
|
|
|
export const GROUP_UPDATE_REQUEST = 'GROUP_UPDATE_REQUEST';
|
|
export const GROUP_UPDATE_SUCCESS = 'GROUP_UPDATE_SUCCESS';
|
|
export const GROUP_UPDATE_FAIL = 'GROUP_UPDATE_FAIL';
|
|
|
|
export const GROUP_EDITOR_VALUE_CHANGE = 'GROUP_EDITOR_VALUE_CHANGE';
|
|
export const GROUP_EDITOR_RESET = 'GROUP_EDITOR_RESET';
|
|
export const GROUP_EDITOR_SETUP = 'GROUP_EDITOR_SETUP';
|
|
|
|
export const submit = (routerHistory) => (dispatch, getState) => {
|
|
const groupId = getState().getIn(['group_editor', 'groupId']);
|
|
const title = getState().getIn(['group_editor', 'title']);
|
|
const description = getState().getIn(['group_editor', 'description']);
|
|
const coverImage = getState().getIn(['group_editor', 'coverImage']);
|
|
|
|
if (groupId === null) {
|
|
dispatch(create(title, description, coverImage, routerHistory));
|
|
} else {
|
|
dispatch(update(groupId, title, description, coverImage, routerHistory));
|
|
}
|
|
};
|
|
|
|
|
|
export const create = (title, description, coverImage, routerHistory) => (dispatch, getState) => {
|
|
if (!me) return;
|
|
|
|
dispatch(createRequest());
|
|
|
|
const formData = new FormData();
|
|
formData.append('title', title);
|
|
formData.append('description', description);
|
|
|
|
if (coverImage !== null) {
|
|
formData.append('cover_image', coverImage);
|
|
}
|
|
|
|
api(getState).post('/api/v1/groups', formData, { headers: { 'Content-Type': 'multipart/form-data' } }).then(({ data }) => {
|
|
dispatch(createSuccess(data));
|
|
routerHistory.push(`/groups/${data.id}`);
|
|
}).catch(err => dispatch(createFail(err)));
|
|
};
|
|
|
|
|
|
export const createRequest = id => ({
|
|
type: GROUP_CREATE_REQUEST,
|
|
id,
|
|
});
|
|
|
|
export const createSuccess = group => ({
|
|
type: GROUP_CREATE_SUCCESS,
|
|
group,
|
|
});
|
|
|
|
export const createFail = error => ({
|
|
type: GROUP_CREATE_FAIL,
|
|
error,
|
|
});
|
|
|
|
export const update = (groupId, title, description, coverImage, routerHistory) => (dispatch, getState) => {
|
|
if (!me) return;
|
|
|
|
dispatch(updateRequest());
|
|
|
|
const formData = new FormData();
|
|
formData.append('title', title);
|
|
formData.append('description', description);
|
|
|
|
if (coverImage !== null) {
|
|
formData.append('cover_image', coverImage);
|
|
}
|
|
|
|
api(getState).put(`/api/v1/groups/${groupId}`, formData, { headers: { 'Content-Type': 'multipart/form-data' } }).then(({ data }) => {
|
|
dispatch(updateSuccess(data));
|
|
routerHistory.push(`/groups/${data.id}`);
|
|
}).catch(err => dispatch(updateFail(err)));
|
|
};
|
|
|
|
|
|
export const updateRequest = id => ({
|
|
type: GROUP_UPDATE_REQUEST,
|
|
id,
|
|
});
|
|
|
|
export const updateSuccess = group => ({
|
|
type: GROUP_UPDATE_SUCCESS,
|
|
group,
|
|
});
|
|
|
|
export const updateFail = error => ({
|
|
type: GROUP_UPDATE_FAIL,
|
|
error,
|
|
});
|
|
|
|
export const changeValue = (field, value) => ({
|
|
type: GROUP_EDITOR_VALUE_CHANGE,
|
|
field,
|
|
value,
|
|
});
|
|
|
|
export const reset = () => ({
|
|
type: GROUP_EDITOR_RESET
|
|
});
|
|
|
|
export const setUp = (group) => ({
|
|
type: GROUP_EDITOR_SETUP,
|
|
group,
|
|
}); |