pleroma-fe/src/stores/bookmark_folders.js

53 lines
1.5 KiB
JavaScript
Raw Normal View History

import { remove, find } from 'lodash'
import { defineStore } from 'pinia'
export const useBookmarkFoldersStore = defineStore('bookmarkFolders', {
state: () => ({
2026-01-06 16:22:52 +02:00
allFolders: [],
}),
getters: {
2026-01-06 16:22:52 +02:00
findBookmarkFolderName() {
return (id) => {
2026-01-06 16:22:52 +02:00
const folder = this.allFolders.find((folder) => folder.id === id)
if (!folder) return
return folder.name
}
2026-01-06 16:22:52 +02:00
},
},
actions: {
2026-01-06 16:22:52 +02:00
setBookmarkFolders(value) {
this.allFolders = value
},
2026-01-06 16:22:52 +02:00
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
}
},
2026-01-06 16:22:52 +02:00
createBookmarkFolder({ name, emoji }) {
return window.vuex.state.api.backendInteractor
.createBookmarkFolder({ name, emoji })
.then((folder) => {
this.setBookmarkFolder(folder)
return folder
})
},
2026-01-06 16:22:52 +02:00
updateBookmarkFolder({ folderId, name, emoji }) {
return window.vuex.state.api.backendInteractor
.updateBookmarkFolder({ folderId, name, emoji })
.then((folder) => {
this.setBookmarkFolder(folder)
return folder
})
},
2026-01-06 16:22:52 +02:00
deleteBookmarkFolder({ folderId }) {
window.vuex.state.api.backendInteractor.deleteBookmarkFolder({ folderId })
2026-01-06 16:22:52 +02:00
remove(this.allFolders, (folder) => folder.id === folderId)
},
},
})