aboutsummaryrefslogtreecommitdiff
path: root/src/modules/bookmark_folders.js
diff options
context:
space:
mode:
authormarcin mikołajczak <git@mkljczk.pl>2024-09-23 23:10:32 +0200
committermarcin mikołajczak <git@mkljczk.pl>2024-09-23 23:13:40 +0200
commit9e45228823cd0fa7eb9388b0eb7780b9609edf66 (patch)
tree1d4680c875616673c0aa8f81ff6d1bfd41314598 /src/modules/bookmark_folders.js
parenta8092de63808ff1445636f07e11f3602774f1438 (diff)
Bookmark folders
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
Diffstat (limited to 'src/modules/bookmark_folders.js')
-rw-r--r--src/modules/bookmark_folders.js66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/modules/bookmark_folders.js b/src/modules/bookmark_folders.js
new file mode 100644
index 00000000..e5f25791
--- /dev/null
+++ b/src/modules/bookmark_folders.js
@@ -0,0 +1,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