From d74d5a8ce29311bc4b5c79527558f84c59965932 Mon Sep 17 00:00:00 2001 From: tusooa Date: Thu, 24 Nov 2022 18:39:42 -0500 Subject: Detect backend support for announcements --- src/modules/announcements.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/modules/announcements.js') 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 }) -- cgit v1.2.3-70-g09d2