Migrate bookmark folders state to pinia store

This commit is contained in:
Sean King 2025-02-21 23:37:29 -07:00
commit bc0b13ac0d
No known key found for this signature in database
GPG key ID: 510C52BACD6E7257
11 changed files with 77 additions and 84 deletions

View file

@ -0,0 +1,51 @@
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)
}
}
})