settings.js 980 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /* eslint no-param-reassign: 0 */
  2. const state = {
  3. originalUser: {},
  4. modifiedUser: {}
  5. };
  6. const getters = {
  7. isGithubLinked: state => state.originalUser.github,
  8. isPasswordLinked: state => state.originalUser.password
  9. };
  10. const actions = {
  11. updateOriginalUser: ({ commit }, payload) => {
  12. commit("updateOriginalUser", payload);
  13. },
  14. setUser: ({ commit }, user) => {
  15. commit("setUser", user);
  16. }
  17. };
  18. const mutations = {
  19. updateOriginalUser(state, payload) {
  20. const { property, value } = payload;
  21. property.split(".").reduce(
  22. // eslint-disable-next-line no-return-assign
  23. (o, p, i) =>
  24. (o[p] =
  25. // eslint-disable-next-line no-plusplus
  26. property.split(".").length === ++i
  27. ? JSON.parse(JSON.stringify(value))
  28. : o[p] || {}),
  29. state.originalUser
  30. );
  31. },
  32. setUser(state, user) {
  33. state.originalUser = user;
  34. state.modifiedUser = JSON.parse(JSON.stringify(user));
  35. }
  36. };
  37. export default {
  38. namespaced: true,
  39. state,
  40. getters,
  41. actions,
  42. mutations
  43. };