aboutsummaryrefslogtreecommitdiff
path: root/src/modules/announcements.js
diff options
context:
space:
mode:
authortusooa <tusooa@kazv.moe>2022-11-24 18:39:42 -0500
committertusooa <tusooa@kazv.moe>2022-11-24 18:39:42 -0500
commitd74d5a8ce29311bc4b5c79527558f84c59965932 (patch)
tree1db3d046711fb60d9991d11b53c6993d5756e56e /src/modules/announcements.js
parentfa69034020078ed0b100bd6b99d79ec07f97c58a (diff)
Detect backend support for announcements
Diffstat (limited to 'src/modules/announcements.js')
-rw-r--r--src/modules/announcements.js17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/modules/announcements.js b/src/modules/announcements.js
index 0f8b6d09..e4d2d2b0 100644
--- a/src/modules/announcements.js
+++ b/src/modules/announcements.js
@@ -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 })