Migrate bookmark folders state to pinia store
This commit is contained in:
parent
9e2086edaf
commit
bc0b13ac0d
11 changed files with 77 additions and 84 deletions
51
src/stores/bookmark_folders.js
Normal file
51
src/stores/bookmark_folders.js
Normal 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)
|
||||
}
|
||||
}
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue