bookmark_folders.js (1531B)
- 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)
- }
- }
- })