aboutsummaryrefslogtreecommitdiff
path: root/src/modules/bookmark_folders.js
blob: e5f257911526542efcba24fc6635d7d1a4bdb4f2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import { remove, find } from 'lodash'

export const defaultState = {
  allFolders: []
}

export const mutations = {
  setBookmarkFolders (state, value) {
    state.allFolders = value
  },
  setBookmarkFolder (state, { folderId, name, emoji, emojiUrl }) {
    const entry = find(state.allFolders, { id: name })
    if (!entry) {
      state.allFolders.push({ id: folderId, name, emoji, emojiUrl })
    } else {
      entry.name = name
      entry.emoji = emoji
      entry.emojiUrl = emojiUrl
    }
  },
  deleteBookmarkFolder (state, { folderId }) {
    remove(state.allFolders, folder => folder.id === folderId)
  }
}

const actions = {
  setBookmarkFolders ({ commit }, value) {
    commit('setBookmarkFolders', value)
  },
  createBookmarkFolder ({ rootState, commit }, { name, emoji }) {
    return rootState.api.backendInteractor.createBookmarkFolder({ name, emoji })
      .then((folder) => {
        commit('setBookmarkFolder', folder)
        return folder
      })
  },
  setBookmarkFolder ({ rootState, commit }, { folderId, name, emoji }) {
    return rootState.api.backendInteractor.updateBookmarkFolder({ folderId, name, emoji })
      .then((folder) => {
        commit('setBookmarkFolder', folder)
        return folder
      })
  },
  deleteBookmarkFolder ({ rootState, commit }, { folderId }) {
    rootState.api.backendInteractor.deleteBookmarkFolder({ folderId })
    commit('deleteBookmarkFolder', { folderId })
  }
}

export const getters = {
  findBookmarkFolderName: state => id => {
    const folder = state.allFolders.find(folder => folder.id === id)

    if (!folder) return
    return folder.name
  }
}

const bookmarkFolders = {
  state: defaultState,
  mutations,
  actions,
  getters
}

export default bookmarkFolders