donal
2018-04-22 3bd680802264ee3f6d8e8dede670efb4d8de9878
src/store/actions.js
@@ -1,14 +1,41 @@
import axios from "axios";
import config from "@/config";
const dummyData = [
  {
    _id: 0,
    title: "Learn awesome things about Labs ðŸ”¬",
    completed: false,
    important: false
  },
  {
    _id: 1,
    title: "Learn about my friend Jenkins ðŸŽ‰",
    completed: true,
    important: false
  },
  {
    _id: 2,
    title: "Drink Coffee â˜•ðŸ’©",
    completed: false,
    important: true
  }
];
export default {
  loadTodos({ commit }) {
    axios
    return axios
      .get(config.todoEndpoint)
      .then(r => r.data)
      .then(todos => {
        commit("SET_TODOS", todos);
        commit("SET_LOADING", false);
      })
      .catch(err => {
        if (err) {
          console.info("INFO - setting dummy data because of ", err);
          commit("SET_TODOS", dummyData);
          commit("SET_LOADING", false);
        }
      });
  },
  addTodo({ commit, state }) {
@@ -16,36 +43,70 @@
      // do not add empty todos
      return;
    }
    debugger
    // debugger
    const todo = {
      title: state.newTodo,
      complete: false,
      important: false,
      id: Math.floor(1 + (9999 - 1) * Math.random())
      completed: false
    };
    axios.post(config.todoEndpoint, todo).then(mongoTodo => {
      commit("ADD_TODO", mongoTodo.data);
    });
    // console.info("TESTINT BLAH BLAH ", todo);
    return axios
      .post(config.todoEndpoint, todo)
      .then(mongoTodo => {
        commit("ADD_TODO", mongoTodo.data);
      })
      .catch(err => {
        if (err) {
          console.info("INFO - Adding dummy todo because of ", err);
          let mongoTodo = todo;
          mongoTodo._id = "fake-todo-item-" + Math.random();
          commit("ADD_TODO", mongoTodo);
        }
      });
  },
  setNewTodo ({ commit }, todo) {
  setNewTodo({ commit }, todo) {
    // debugger
    commit('SET_NEW_TODO', todo)
  },
  updateTodo({ commit,state }, todo) {
    // const todo = state.newTodo
    debugger
    const foundIndex = state.todos.findIndex(obj => obj.id === todo.id);
    state.todos[foundIndex] = todo;
    const newUpdatedArray = state.todos
    commit("UPDATE_TODO", newUpdatedArray)
    commit("SET_NEW_TODO", todo);
  },
  clearNewTodo({ commit }) {
    commit("CLEAR_NEW_TODO");
  },
  clearAllTodos({ commit }) {
    commit("CLEAR_ALL_TODOS")
  clearTodos({ commit, state }, all) {
    // 1 fire and forget or
    const deleteStuff = id => {
      axios.delete(config.todoEndpoint + "/" + id).then(data => {
        console.info("INFO - item " + id + " deleted", data);
      });
    };
    if (all) {
      state.todos.map(todo => {
        deleteStuff(todo._id);
      });
      commit("CLEAR_ALL_TODOS");
    } else {
      state.todos.map(todo => {
        // axios remove all done by the id
        if (todo.completed) {
          deleteStuff(todo._id);
        }
      });
      commit("CLEAR_ALL_DONE_TODOS");
    }
    //  2 return array of promises and resolve all
  },
  clearAllDoneTodos({ commit }) {
    commit("CLEAR_ALL_DONE_TODOS")
  },
  /* eslint: ignore */
  updateTodo({ commit, state }, { id, important }) {
    let i = state.todos.findIndex(todo => todo._id === id);
    if (important) {
      // TODO - add commit imporant here!
    } else {
      commit("MARK_TODO_COMPLETED", i);
    }
    // Fire and forget style backend update ;)
    return axios
      .put(config.todoEndpoint + "/" + state.todos[i]._id, state.todos[i])
      .then(() => {
        console.info("INFO - item " + id + " updated");
      });
  }
};