diff options
Diffstat (limited to 'src/modules')
| -rw-r--r-- | src/modules/api.js | 17 | ||||
| -rw-r--r-- | src/modules/bookmark_folders.js | 66 | ||||
| -rw-r--r-- | src/modules/instance.js | 1 | ||||
| -rw-r--r-- | src/modules/statuses.js | 4 | ||||
| -rw-r--r-- | src/modules/users.js | 2 |
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') |
