Donal Spring
2018-06-03 71eec436bdcbb5c86c11929033b6053a986e857b
src/store/actions.js
@@ -3,32 +3,36 @@
const dummyData = [
  {
    title: "Learn awesome things about Labs",
    _id: 0,
    title: "Learn awesome things about Labs ðŸ”¬",
    completed: false,
    important: false
  },
  {
    title: "Learn about my friend Jenkins",
    _id: 1,
    title: "Learn about my friend Jenkins ðŸŽ‰",
    completed: true,
    important: false
  },
  {
    title: "Have a poop",
    _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 => {
      })
      .catch(err => {
        if (err) {
          console.info("INFO - setting dummy data because of ", err)
          console.info("INFO - setting dummy data because of ", err);
          commit("SET_TODOS", dummyData);
          commit("SET_LOADING", false);
        }
@@ -45,47 +49,66 @@
      completed: false,
      important: 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) {
    // 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);
  },
  clearNewTodo({ commit }) {
    commit("CLEAR_NEW_TODO");
  },
  clearTodos({ commit, state }, all) {
    // 1 fire and forget or
    const deleteStuff = (id) => {
      axios.delete(config.todoEndpoint + '/' + id).then(data => {
    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)
      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)
          deleteStuff(todo._id);
        }
      });
      commit("CLEAR_ALL_DONE_TODOS");
    }
    //  2 return array of promises and resolve all
  },
  /* eslint: ignore */
  updateTodo({ commit, state }, { id, important }) {
    let i = state.todos.findIndex(todo => todo._id === id);
    if (important) {
      // TODO - add commit imporant here!
      commit("MARK_TODO_IMPORTANT", i);
    } 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(data => {
        console.log("INFO - item " + id + " updated");
      });
  }
};