aboutsummaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
authorHJ <30-hj@users.noreply.git.pleroma.social>2024-10-04 10:11:49 +0000
committerHJ <30-hj@users.noreply.git.pleroma.social>2024-10-04 10:11:49 +0000
commitbb0a7a81c5c5e9947471ccffff629af9ee6d6185 (patch)
treee67dca18d5f0343ae798e60bfec7d7969e54856f /src/modules
parenta1c3a7a742ea86b0ddeb67a42ca27f478f0f22a2 (diff)
parent216ca52073212942ffb6f75b63993a5f5c32a5d6 (diff)
Merge branch 'bookmark-folders' into 'develop'
Bookmark folders Closes #1335 See merge request pleroma/pleroma-fe!1945
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/api.js17
-rw-r--r--src/modules/bookmark_folders.js66
-rw-r--r--src/modules/instance.js1
-rw-r--r--src/modules/statuses.js4
-rw-r--r--src/modules/users.js2
5 files changed, 87 insertions, 3 deletions
diff --git a/src/modules/api.js b/src/modules/api.js
index 3dbead5b..23364fcd 100644
--- a/src/modules/api.js
+++ b/src/modules/api.js
@@ -203,12 +203,13 @@ const api = {
tag = false,
userId = false,
listId = false,
- statusId = false
+ statusId = false,
+ bookmarkFolderId = false
}) {
if (store.state.fetchers[timeline]) return
const fetcher = store.state.backendInteractor.startFetchingTimeline({
- timeline, store, userId, listId, statusId, tag
+ timeline, store, userId, listId, statusId, bookmarkFolderId, tag
})
store.commit('addFetcher', { fetcherName: timeline, fetcher })
},
@@ -272,6 +273,18 @@ const api = {
store.commit('removeFetcher', { fetcherName: 'lists', fetcher })
},
+ // Bookmark folders
+ startFetchingBookmarkFolders (store) {
+ if (store.state.fetchers.bookmarkFolders) return
+ const fetcher = store.state.backendInteractor.startFetchingBookmarkFolders({ store })
+ store.commit('addFetcher', { fetcherName: 'bookmarkFolders', fetcher })
+ },
+ stopFetchingBookmarkFolders (store) {
+ const fetcher = store.state.fetchers.bookmarkFolders
+ if (!fetcher) return
+ store.commit('removeFetcher', { fetcherName: 'bookmarkFolders', fetcher })
+ },
+
// Pleroma websocket
setWsToken (store, token) {
store.commit('setWsToken', token)
diff --git a/src/modules/bookmark_folders.js b/src/modules/bookmark_folders.js
new file mode 100644
index 00000000..c276adf4
--- /dev/null
+++ b/src/modules/bookmark_folders.js
@@ -0,0 +1,66 @@
+import { remove, find } from 'lodash'
+
+export const defaultState = {
+ allFolders: []
+}
+
+export const mutations = {
+ setBookmarkFolders (state, value) {
+ state.allFolders = value
+ },
+ setBookmarkFolder (state, { id, name, emoji, emoji_url: emojiUrl }) {
+ const entry = find(state.allFolders, { id })
+ if (!entry) {
+ state.allFolders.push({ id, name, emoji, emoji_url: emojiUrl })
+ } else {
+ entry.name = name
+ entry.emoji = emoji
+ entry.emoji_url = emojiUrl
+ }
+ },
+ deleteBookmarkFolder (state, { folderId }) {
+ remove(state.allFolders, folder => folder.id === folderId)
+ }
+}
+
+const actions = {
+ setBookmarkFolders ({ commit }, value) {
+ commit('setBookmarkFolders', value)
+ },
+ createBookmarkFolder ({ rootState, commit }, { name, emoji }) {
+ return rootState.api.backendInteractor.createBookmarkFolder({ name, emoji })
+ .then((folder) => {
+ commit('setBookmarkFolder', folder)
+ return folder
+ })
+ },
+ setBookmarkFolder ({ rootState, commit }, { folderId, name, emoji }) {
+ return rootState.api.backendInteractor.updateBookmarkFolder({ folderId, name, emoji })
+ .then((folder) => {
+ commit('setBookmarkFolder', folder)
+ return folder
+ })
+ },
+ deleteBookmarkFolder ({ rootState, commit }, { folderId }) {
+ rootState.api.backendInteractor.deleteBookmarkFolder({ folderId })
+ commit('deleteBookmarkFolder', { folderId })
+ }
+}
+
+export const getters = {
+ findBookmarkFolderName: state => id => {
+ const folder = state.allFolders.find(folder => folder.id === id)
+
+ if (!folder) return
+ return folder.name
+ }
+}
+
+const bookmarkFolders = {
+ state: defaultState,
+ mutations,
+ actions,
+ getters
+}
+
+export default bookmarkFolders
diff --git a/src/modules/instance.js b/src/modules/instance.js
index 994f60a5..dac16793 100644
--- a/src/modules/instance.js
+++ b/src/modules/instance.js
@@ -140,6 +140,7 @@ const defaultState = {
shoutAvailable: false,
pleromaChatMessagesAvailable: false,
pleromaCustomEmojiReactionsAvailable: false,
+ pleromaBookmarkFoldersAvailable: false,
gopherAvailable: false,
mediaProxyAvailable: false,
suggestionsEnabled: false,
diff --git a/src/modules/statuses.js b/src/modules/statuses.js
index 462def22..5822c533 100644
--- a/src/modules/statuses.js
+++ b/src/modules/statuses.js
@@ -385,10 +385,12 @@ export const mutations = {
setBookmarked (state, { status, value }) {
const newStatus = state.allStatusesObject[status.id]
newStatus.bookmarked = value
+ newStatus.bookmark_folder_id = status.bookmark_folder_id
},
setBookmarkedConfirm (state, { status }) {
const newStatus = state.allStatusesObject[status.id]
newStatus.bookmarked = status.bookmarked
+ if (status.pleroma) newStatus.bookmark_folder_id = status.pleroma.bookmark_folder
},
setDeleted (state, { status }) {
const newStatus = state.allStatusesObject[status.id]
@@ -569,7 +571,7 @@ const statuses = {
},
bookmark ({ rootState, commit }, status) {
commit('setBookmarked', { status, value: true })
- rootState.api.backendInteractor.bookmarkStatus({ id: status.id })
+ rootState.api.backendInteractor.bookmarkStatus({ id: status.id, folder_id: status.bookmark_folder_id })
.then(status => {
commit('setBookmarkedConfirm', { status })
})
diff --git a/src/modules/users.js b/src/modules/users.js
index b8f49f15..47b43c6f 100644
--- a/src/modules/users.js
+++ b/src/modules/users.js
@@ -579,6 +579,7 @@ const users = {
store.commit('setBackendInteractor', backendInteractorService(store.getters.getToken()))
store.dispatch('stopFetchingNotifications')
store.dispatch('stopFetchingLists')
+ store.dispatch('stopFetchingBookmarkFolders')
store.dispatch('stopFetchingFollowRequests')
store.commit('clearNotifications')
store.commit('resetStatuses')
@@ -635,6 +636,7 @@ const users = {
}
dispatch('startFetchingLists')
+ dispatch('startFetchingBookmarkFolders')
if (user.locked) {
dispatch('startFetchingFollowRequests')