Bookmark folders
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
This commit is contained in:
parent
a8092de638
commit
9e45228823
28 changed files with 464 additions and 31 deletions
|
|
@ -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)
|
||||
|
|
|
|||
66
src/modules/bookmark_folders.js
Normal file
66
src/modules/bookmark_folders.js
Normal file
|
|
@ -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
|
||||
|
|
@ -140,6 +140,7 @@ const defaultState = {
|
|||
shoutAvailable: false,
|
||||
pleromaChatMessagesAvailable: false,
|
||||
pleromaCustomEmojiReactionsAvailable: false,
|
||||
pleromaBookmarkFoldersAvailable: false,
|
||||
gopherAvailable: false,
|
||||
mediaProxyAvailable: false,
|
||||
suggestionsEnabled: false,
|
||||
|
|
|
|||
|
|
@ -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')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue