mutations.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import defaultState from '@/store/state'
  2. import Experiments from '@/router/experiments'
  3. const checkProgression = (state, experimentName, sceneName) => {
  4. if (!state.progression[experimentName])
  5. state.progression[experimentName] = {}
  6. if (!state.progression[experimentName][sceneName])
  7. state.progression[experimentName][sceneName] = { done: false, data: {} }
  8. }
  9. const createProgressionObj = (state, scenes) => {
  10. const progressionObj = Experiments.reduce((accExpe, expe) => {
  11. const scenesProgressObj = scenes.reduce((accScene, scene) => {
  12. // Do not overwrite current progression
  13. if (state.progression[expe.name] && state.progression[expe.name][scene])
  14. accScene[scene] = state.progression[expe.name][scene]
  15. else accScene[scene] = { done: false, data: {} }
  16. return accScene
  17. }, {})
  18. accExpe[expe.name] = scenesProgressObj
  19. return accExpe
  20. }, {})
  21. state.progression = progressionObj
  22. }
  23. export default {
  24. setCustomLinkData(state, data) {
  25. state.customLinkData = JSON.parse(atob(data))
  26. },
  27. clearCustomLinkData(state) {
  28. state.customLinkData = null
  29. },
  30. setGdprValidated(state) {
  31. state.gdprConsent = true
  32. },
  33. setAppUniqueId(state) {
  34. state.uuid = [...Array(30)].map(() => Math.random().toString(36)[2]).join('')
  35. },
  36. resetApp(state, { gdprConsent, hostConfig, progression }) {
  37. const defaultStateObj = defaultState()
  38. if (gdprConsent) {
  39. state.gdprConsent = false
  40. delete state.userId
  41. delete state.experimentId
  42. delete state.hostConfig
  43. delete state.progression
  44. delete state.scenesList
  45. return
  46. }
  47. if (hostConfig) {
  48. state.hostConfig = defaultStateObj.hostConfig
  49. state.userId = defaultStateObj.userId
  50. state.experimentId = defaultStateObj.experimentId
  51. }
  52. if (progression) {
  53. // Reset progression and recreate the progression object
  54. state.progression = defaultStateObj.progression
  55. if (state.scenesList) createProgressionObj(state, state.scenesList)
  56. }
  57. },
  58. setHostConfig(state, newConfig) {
  59. state.hostConfig = newConfig
  60. },
  61. setUserExperimentId(state, { userId, experimentId }) {
  62. state.userId = userId
  63. state.experimentId = experimentId
  64. },
  65. setListScenes(state, scenes) {
  66. state.scenesList = scenes
  67. createProgressionObj(state, scenes)
  68. },
  69. setExperimentProgress(state, { experimentName, sceneName, data }) {
  70. checkProgression(state, experimentName, sceneName)
  71. state.progression[experimentName][sceneName].data = data
  72. },
  73. setExperimentDone(state, { experimentName, sceneName, done }) {
  74. checkProgression(state, experimentName, sceneName)
  75. state.progression[experimentName][sceneName].done = done
  76. }
  77. }