pleroma-fe/src/stores/bookmark_folders.js

69 lines
1.8 KiB
JavaScript
Raw Normal View History

2026-01-06 16:23:17 +02:00
import { find, remove } from 'lodash'
import { defineStore } from 'pinia'
2026-06-13 03:10:00 +03:00
import { useCredentialsStore } from 'src/stores/credentials.js'
import {
createBookmarkFolder,
deleteBookmarkFolder,
updateBookmarkFolder,
} from 'src/services/api/api.service.js'
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 }) {
2026-06-13 03:10:00 +03:00
return createBookmarkFolder({
name,
emoji,
credentials: useCredentialsStore().current,
}).then((folder) => {
this.setBookmarkFolder(folder)
return folder
})
},
2026-01-06 16:22:52 +02:00
updateBookmarkFolder({ folderId, name, emoji }) {
2026-06-13 03:10:00 +03:00
return updateBookmarkFolder({
credentials: useCredentialsStore().current,
folderId,
name,
emoji,
}).then((folder) => {
this.setBookmarkFolder(folder)
return folder
})
},
2026-01-06 16:22:52 +02:00
deleteBookmarkFolder({ folderId }) {
2026-06-13 03:10:00 +03:00
deleteBookmarkFolder({
folderId,
credentials: useCredentialsStore().current,
})
2026-01-06 16:22:52 +02:00
remove(this.allFolders, (folder) => folder.id === folderId)
},
},
})