2019-07-09 10:35:24 +02:00
|
|
|
import axios from 'axios';
|
|
|
|
import * as ActionTypes from '../../../constants';
|
|
|
|
import { startLoader, stopLoader } from './loader';
|
|
|
|
|
|
|
|
const __process = (typeof global !== 'undefined' ? global : window).process;
|
|
|
|
const ROOT_URL = __process.env.API_URL;
|
|
|
|
|
|
|
|
// eslint-disable-next-line
|
|
|
|
export function getCollections(username) {
|
|
|
|
return (dispatch) => {
|
|
|
|
dispatch(startLoader());
|
|
|
|
let url;
|
|
|
|
if (username) {
|
|
|
|
url = `${ROOT_URL}/${username}/collections`;
|
|
|
|
} else {
|
|
|
|
url = `${ROOT_URL}/collections`;
|
|
|
|
}
|
|
|
|
axios.get(url, { withCredentials: true })
|
|
|
|
.then((response) => {
|
|
|
|
dispatch({
|
|
|
|
type: ActionTypes.SET_COLLECTIONS,
|
|
|
|
collections: response.data
|
|
|
|
});
|
|
|
|
dispatch(stopLoader());
|
|
|
|
})
|
|
|
|
.catch((response) => {
|
|
|
|
dispatch({
|
|
|
|
type: ActionTypes.ERROR,
|
|
|
|
error: response.data
|
|
|
|
});
|
|
|
|
dispatch(stopLoader());
|
|
|
|
});
|
|
|
|
};
|
|
|
|
}
|
2019-07-09 18:24:09 +02:00
|
|
|
|
|
|
|
export function createCollection(collection) {
|
|
|
|
return (dispatch) => {
|
|
|
|
dispatch(startLoader());
|
|
|
|
const url = `${ROOT_URL}/collections`;
|
|
|
|
return axios.post(url, collection, { withCredentials: true })
|
|
|
|
.then((response) => {
|
|
|
|
dispatch({
|
|
|
|
type: ActionTypes.CREATE_COLLECTION
|
|
|
|
});
|
|
|
|
dispatch(stopLoader());
|
|
|
|
|
|
|
|
return response.data;
|
|
|
|
})
|
|
|
|
.catch((response) => {
|
|
|
|
dispatch({
|
|
|
|
type: ActionTypes.ERROR,
|
|
|
|
error: response.data
|
|
|
|
});
|
|
|
|
dispatch(stopLoader());
|
|
|
|
|
|
|
|
return response.data;
|
|
|
|
});
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
export function addToCollection(collectionId, projectId) {
|
|
|
|
return (dispatch) => {
|
|
|
|
dispatch(startLoader());
|
|
|
|
const url = `${ROOT_URL}/collections/${collectionId}/${projectId}`;
|
|
|
|
return axios.post(url, { withCredentials: true })
|
|
|
|
.then((response) => {
|
|
|
|
dispatch({
|
|
|
|
type: ActionTypes.ADD_TO_COLLECTION,
|
|
|
|
payload: response.data
|
|
|
|
});
|
|
|
|
dispatch(stopLoader());
|
|
|
|
|
|
|
|
return response.data;
|
|
|
|
})
|
|
|
|
.catch((response) => {
|
|
|
|
dispatch({
|
|
|
|
type: ActionTypes.ERROR,
|
|
|
|
error: response.data
|
|
|
|
});
|
|
|
|
dispatch(stopLoader());
|
|
|
|
|
|
|
|
return response.data;
|
|
|
|
});
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
export function removeFromCollection(collectionId, projectId) {
|
|
|
|
return (dispatch) => {
|
|
|
|
dispatch(startLoader());
|
|
|
|
const url = `${ROOT_URL}/collections/${collectionId}/${projectId}`;
|
|
|
|
return axios.delete(url, { withCredentials: true })
|
|
|
|
.then((response) => {
|
|
|
|
dispatch({
|
|
|
|
type: ActionTypes.REMOVE_FROM_COLLECTION,
|
|
|
|
payload: response.data
|
|
|
|
});
|
|
|
|
dispatch(stopLoader());
|
|
|
|
|
|
|
|
return response.data;
|
|
|
|
})
|
|
|
|
.catch((response) => {
|
|
|
|
dispatch({
|
|
|
|
type: ActionTypes.ERROR,
|
|
|
|
error: response.data
|
|
|
|
});
|
|
|
|
dispatch(stopLoader());
|
|
|
|
|
|
|
|
return response.data;
|
|
|
|
});
|
|
|
|
};
|
|
|
|
}
|