Browse Source

add gallery store

axolotle 2 years ago
parent
commit
966927da4c
2 changed files with 42 additions and 0 deletions
  1. 2 0
      src/store/index.js
  2. 40 0
      src/store/modules/gallery.js

+ 2 - 0
src/store/index.js

@@ -4,6 +4,7 @@ import Vuex from 'vuex'
 import nodes from './nodes'
 import library from './modules/library'
 import kit from './modules/kit'
+import gallery from './modules/gallery'
 import pages from './modules/pages'
 
 Vue.use(Vuex)
@@ -13,6 +14,7 @@ export default new Vuex.Store({
   modules: {
     library,
     kit,
+    gallery,
     pages
   }
 })

+ 40 - 0
src/store/modules/gallery.js

@@ -0,0 +1,40 @@
+export default {
+  state: {
+    creation: undefined
+  },
+
+  mutations: {
+    'SET_CREATION' (state, id) {
+      state.creation = id
+    }
+  },
+
+  actions: {
+    async 'INIT_GALLERY' ({ state, commit, dispatch, getters }) {
+      const ids = await dispatch('GET_ALL_NODES_IDS', { variant: 'creation', dataLevel: 'full' })
+      dispatch('OPEN_CREATION', ids[ids.length - 1])
+      return dispatch('GET_NODES', { ids, dataLevel: 'full' })
+    },
+
+    async 'OPEN_CREATION' ({ state, commit, dispatch }, id) {
+      commit('SET_CREATION', id)
+      commit('ADD_HISTORY_ENTRIES', [id])
+      return dispatch('GET_NODE', { id, dataLevel: 'full' })
+    }
+  },
+
+  getters: {
+    creations: (state, getters, rootState) => {
+      const ids = rootState.ids.creation
+      if (ids === undefined) return
+      const nodes = ids.map(id => rootState.nodes[id])
+      if (nodes.some(node => node === undefined)) return
+      return nodes
+    },
+
+    creation: (state, getters, rootState) => {
+      if (state.creation === undefined || state.creation === null) return state.creation
+      return rootState.nodes[state.creation]
+    }
+  }
+}