logo

pleroma-fe

My custom branche(s) on git.pleroma.social/pleroma/pleroma-fe git clone https://anongit.hacktivis.me/git/pleroma-fe.git/

bookmark_folders.js (1531B)


  1. import { remove, find } from 'lodash'
  2. import { defineStore } from 'pinia'
  3. export const useBookmarkFoldersStore = defineStore('bookmarkFolders', {
  4. state: () => ({
  5. allFolders: []
  6. }),
  7. getters: {
  8. findBookmarkFolderName () {
  9. return (id) => {
  10. const folder = this.allFolders.find(folder => folder.id === id)
  11. if (!folder) return
  12. return folder.name
  13. }
  14. }
  15. },
  16. actions: {
  17. setBookmarkFolders (value) {
  18. this.allFolders = value
  19. },
  20. setBookmarkFolder ({ id, name, emoji, emoji_url: emojiUrl }) {
  21. const entry = find(this.allFolders, { id })
  22. if (!entry) {
  23. this.allFolders.push({ id, name, emoji, emoji_url: emojiUrl })
  24. } else {
  25. entry.name = name
  26. entry.emoji = emoji
  27. entry.emoji_url = emojiUrl
  28. }
  29. },
  30. createBookmarkFolder ({ name, emoji }) {
  31. return window.vuex.state.api.backendInteractor.createBookmarkFolder({ name, emoji })
  32. .then((folder) => {
  33. this.setBookmarkFolder(folder)
  34. return folder
  35. })
  36. },
  37. updateBookmarkFolder ({ folderId, name, emoji }) {
  38. return window.vuex.state.api.backendInteractor.updateBookmarkFolder({ folderId, name, emoji })
  39. .then((folder) => {
  40. this.setBookmarkFolder(folder)
  41. return folder
  42. })
  43. },
  44. deleteBookmarkFolder ({ folderId }) {
  45. window.vuex.state.api.backendInteractor.deleteBookmarkFolder({ folderId })
  46. remove(this.allFolders, folder => folder.id === folderId)
  47. }
  48. }
  49. })