Newer
Older
import axios from 'axios'
export default {
namespaced: true,
state: {
currentLanguage: 'en_US',
lastDate: new Date(),
maxMessages: 100,
messageDisplayDuration: 10000,
messages: [],
notifications: {
inbox: 0,
},
websocketEventsHandlers: {
'inbox.item_added': {},
'import.status_updated': {},
addWebsocketEventHandler: (state, {eventName, id, handler}) => {
state.websocketEventsHandlers[eventName][id] = handler
},
removeWebsocketEventHandler: (state, {eventName, id}) => {
delete state.websocketEventsHandlers[eventName][id]
},
currentLanguage: (state, value) => {
state.currentLanguage = value
},
computeLastDate: (state) => {
state.lastDate = new Date()
},
addMessage (state, message) {
state.messages.push(message)
if (state.messages.length > state.maxMessages) {
state.messages.shift()
}
},
notifications (state, {type, count}) {
state.notifications[type] = count
},
incrementNotifications (state, {type, count}) {
state.notifications[type] = Math.max(0, state.notifications[type] + count)
}
},
actions: {
fetchUnreadNotifications ({commit}, payload) {
axios.get('federation/inbox/', {params: {is_read: false, page_size: 1}}).then((response) => {
commit('notifications', {type: 'inbox', count: response.data.count})
websocketEvent ({state}, event) {
let handlers = state.websocketEventsHandlers[event.type]
console.log('Dispatching websocket event', event, handlers)
let names = Object.keys(handlers)
names.forEach((k) => {
let handler = handlers[k]
handler(event)