import * as ActionTypes from '../../../constants'; import axios from 'axios'; import { showErrorModal, setPreviousPath } from './ide'; import { resetProject } from './project'; const ROOT_URL = location.href.indexOf('localhost') > 0 ? 'http://localhost:8000/api' : '/api'; export function getProjects(username) { return (dispatch) => { let url; if (username) { url = `${ROOT_URL}/${username}/projects`; } else { url = `${ROOT_URL}/projects`; } axios.get(url, { withCredentials: true }) .then(response => { dispatch({ type: ActionTypes.SET_PROJECTS, projects: response.data }); }) .catch(response => dispatch({ type: ActionTypes.ERROR, error: response.data })); }; } export function deleteProject(id) { return (dispatch, getState) => { axios.delete(`${ROOT_URL}/projects/${id}`, { withCredentials: true }) .then(() => { const state = getState(); if (id === state.project.id) { dispatch(resetProject()); dispatch(setPreviousPath('/')); } dispatch({ type: ActionTypes.DELETE_PROJECT, id }); }) .catch(response => { if (response.status === 403) { dispatch(showErrorModal('staleSession')); } else { dispatch({ type: ActionTypes.ERROR, error: response.data }); } }); }; }