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/users.js | 2 |
4 files changed, 84 insertions, 2 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..e5f25791 --- /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, { folderId, name, emoji, emojiUrl }) { + const entry = find(state.allFolders, { id: name }) + if (!entry) { + state.allFolders.push({ id: folderId, name, emoji, emojiUrl }) + } else { + entry.name = name + entry.emoji = emoji + entry.emojiUrl = 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/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') |
