You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
1.8 KiB

5 years ago
  1. import MemberService from '@/services/member.service'
  2. export const state = () => ({
  3. items: [],
  4. selected: []
  5. })
  6. export const getters = {
  7. isMemberSelected(state) {
  8. return state.selected.length > 0
  9. }
  10. }
  11. export const mutations = {
  12. setMemberList(state, payload) {
  13. state.items = payload
  14. },
  15. addMember(state, member) {
  16. state.items.unshift(member)
  17. },
  18. deleteMember(state, userId) {
  19. state.items = state.items.filter(item => item.id !== userId)
  20. },
  21. updateSelected(state, selected) {
  22. state.selected = selected
  23. },
  24. updateMember(state, member) {
  25. const item = state.items.find(item => item.id === member.id)
  26. Object.assign(item, member)
  27. },
  28. resetSelected(state) {
  29. state.selected = []
  30. }
  31. }
  32. export const actions = {
  33. getMemberList(context, config) {
  34. return MemberService.getMemberList()
  35. .then((response) => {
  36. context.commit('setMemberList', response)
  37. })
  38. .catch((error) => {
  39. alert(error)
  40. })
  41. },
  42. addMember({ commit }, data) {
  43. MemberService.addMember(data.projectId, data.userId, data.role)
  44. .then((response) => {
  45. commit('addMember', response)
  46. })
  47. .catch((error) => {
  48. alert(error)
  49. })
  50. },
  51. updateMemberRole({ commit }, member) {
  52. MemberService.updateMemberRole(member.projectId, member.id, member.role) // Todo: replace project id
  53. .then((response) => {
  54. commit('updateMember', response)
  55. })
  56. .catch((error) => {
  57. alert(error)
  58. })
  59. },
  60. removeMember({ commit, state }, projectId) {
  61. for (const member of state.selected) {
  62. MemberService.deleteMember(projectId, member.id)
  63. .then((response) => {
  64. commit('deleteMember', member.id)
  65. })
  66. .catch((error) => {
  67. alert(error)
  68. })
  69. }
  70. commit('resetSelected')
  71. }
  72. }