Skip to content
Snippets Groups Projects
APICalls.js 2.25 KiB
Newer Older
import axios from 'axios'

const axiosInstance = axios.create({
    baseURL: process.env.PUBLIC_URL,
    withCredentials: true,
});

axiosInstance.interceptors.response.use(
    res => {

        return res;
    },
    error => {
        return Promise.reject(error.response)
    }
);

export const signout = () => {
    return axiosInstance.post(process.env.PUBLIC_URL + '/logout').then(user => {
        // delete axiosInstance.defaults.headers.common["Authorization"];
        return user.data
    })
}


export const init = () => {
    return axiosInstance.post('/init').then(user => {
        return user.data
    })
}

export const login = (email, password) => {
    return axiosInstance.post('/login', {
        email,
        password
    }).then(user => {
        // axiosInstance.defaults.headers.common["Authorization"] = `Bearer ${user.data.token}`;
        return user.data
    })
}

export const signup = (name, email, password) => {
    return axiosInstance.post('/signup', {
        name,
        email,
        password
    }).then(user => {
        return user.data
    })
}

export const addTodo = (title, description) => {
    return axiosInstance.post('/todo/add', {
        title,
        description
    }).then(todo => {
        return todo.data
    })
}

export const listTodo = () => {
    //I have used post instead of get, read https://blog.teamtreehouse.com/the-definitive-guide-to-get-vs-post
    return axiosInstance.post('/todo/list').then(todos => {
        return todos.data
    })
}


export const updateTodo = (_id, important = null, done = null) => {
    //I have used post instead of get, read https://blog.teamtreehouse.com/the-definitive-guide-to-get-vs-post
    const fieldsToUpdate = {
        _id
    }

    if (important !== null) {
        fieldsToUpdate.important = important
    }
    if (done !== null) {
        fieldsToUpdate.done = done
    }
    return axiosInstance.patch('/todo/update', fieldsToUpdate).then(todo => {
        return todo.data
    })
}


export const deleteTodo = (_id) => {
    //I have used post instead of get, read https://blog.teamtreehouse.com/the-definitive-guide-to-get-vs-post
    return axiosInstance.delete('/todo/delete', {
        data: {
            _id,
        }
    }).then(todo => {
        return todo
    })