Skip to content
Snippets Groups Projects
Unverified Commit ffaebb98 authored by tusooa's avatar tusooa :zap:
Browse files

Check if backend supports announcements

parent 9d504a61
No related branches found
No related tags found
No related merge requests found
......@@ -55,7 +55,8 @@ const NavPanel = {
followRequestCount: state => state.api.followRequests.length,
privateMode: state => state.instance.private,
federating: state => state.instance.federating,
pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable
pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable,
supportsAnnouncements: state => state.announcements.supportsAnnouncements
}),
...mapGetters(['unreadChatCount', 'unreadAnnouncementCount'])
}
......
......@@ -85,7 +85,7 @@
/>{{ $t("nav.about") }}
</router-link>
</li>
<li v-if="currentUser">
<li v-if="currentUser && supportsAnnouncements">
<router-link
class="menu-item"
:to="{ name: 'announcements' }"
......
......@@ -84,7 +84,8 @@ const SideDrawer = {
return this.currentUser ? 'friends' : 'public-timeline'
},
...mapState({
pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable
pleromaChatMessagesAvailable: state => state.instance.pleromaChatMessagesAvailable,
supportsAnnouncements: state => state.announcements.supportsAnnouncements
}),
...mapGetters(['unreadChatCount', 'unreadAnnouncementCount'])
},
......
......@@ -180,7 +180,7 @@
</a>
</li>
<li
v-if="currentUser"
v-if="currentUser && supportsAnnouncements"
@click="toggleDrawer"
>
<router-link
......
......@@ -2,6 +2,7 @@ const FETCH_ANNOUNCEMENT_INTERVAL_MS = 1000 * 60 * 5
export const defaultState = {
announcements: [],
supportsAnnouncements: true,
fetchAnnouncementsTimer: undefined
}
......@@ -20,6 +21,9 @@ export const mutations = {
},
setFetchAnnouncementsTimer (state, timer) {
state.fetchAnnouncementsTimer = timer
},
setSupportsAnnouncements (state, supportsAnnouncements) {
state.supportsAnnouncements = supportsAnnouncements
}
}
......@@ -40,6 +44,10 @@ const announcements = {
getters,
actions: {
fetchAnnouncements (store) {
if (!store.state.supportsAnnouncements) {
return Promise.resolve()
}
const currentUser = store.rootState.users.currentUser
const isAdmin = currentUser && currentUser.role === 'admin'
......@@ -72,6 +80,15 @@ const announcements = {
.then(announcements => {
store.commit('setAnnouncements', announcements)
})
.catch(error => {
// If and only if backend does not support announcements, it would return 404.
// In this case, silently ignores it.
if (error && error.statusCode === 404) {
store.commit('setSupportsAnnouncements', false)
} else {
throw error
}
})
},
markAnnouncementAsRead (store, id) {
return store.rootState.api.backendInteractor.dismissAnnouncement({ id })
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment