import { remove, find } from 'lodash' import { defineStore } from 'pinia' export const useBookmarkFoldersStore = defineStore('bookmarkFolders', { state: () => ({ allFolders: [], }), getters: { findBookmarkFolderName() { return (id) => { const folder = this.allFolders.find((folder) => folder.id === id) if (!folder) return return folder.name } }, }, actions: { setBookmarkFolders(value) { this.allFolders = value }, setBookmarkFolder({ id, name, emoji, emoji_url: emojiUrl }) { const entry = find(this.allFolders, { id }) if (!entry) { this.allFolders.push({ id, name, emoji, emoji_url: emojiUrl }) } else { entry.name = name entry.emoji = emoji entry.emoji_url = emojiUrl } }, createBookmarkFolder({ name, emoji }) { return window.vuex.state.api.backendInteractor .createBookmarkFolder({ name, emoji }) .then((folder) => { this.setBookmarkFolder(folder) return folder }) }, updateBookmarkFolder({ folderId, name, emoji }) { return window.vuex.state.api.backendInteractor .updateBookmarkFolder({ folderId, name, emoji }) .then((folder) => { this.setBookmarkFolder(folder) return folder }) }, deleteBookmarkFolder({ folderId }) { window.vuex.state.api.backendInteractor.deleteBookmarkFolder({ folderId }) remove(this.allFolders, (folder) => folder.id === folderId) }, }, })