All files / src/store/modules notifications.module.js

100% Statements 19/19
100% Branches 14/14
100% Functions 11/11
100% Lines 19/19

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79            1x             19x 19x 15x   4x         2x 2x         5x             5x       2x           2x       2x           2x       2x           2x       1x       2x 2x 2x      
import { AUTH_ERROR_TYPES } from '../../utils/errorUtils';
import { NOTIF_ACT, NOTIF_GET, NOTIF_MUT } from '../types';
 
export default {
  namespaced: true,
  state() {
    return {
      notification: null, // { severity: 'error', message: '...', closable: true }
      isAuthError: false, // Flag to track if current error is auth-related
    };
  },
  mutations: {
    [NOTIF_MUT.setNotification](state, payload) {
      state.notification = payload;
      if (payload && payload.severity === 'error') {
        state.isAuthError = AUTH_ERROR_TYPES.includes(payload.type);
      } else {
        state.isAuthError = false;
      }
    },
 
    [NOTIF_MUT.clearNotification](state) {
      state.notification = null;
      state.isAuthError = false;
    },
  },
  actions: {
    [NOTIF_ACT.showError]({ commit }, payload) {
      const notification = {
        severity: 'error',
        message: typeof payload === 'string' ? payload : payload.message,
        closable: payload.closable !== false, // Default true
        type: payload.type || 'error', // Add error type
        ...payload,
      };
      commit(NOTIF_MUT.setNotification, notification);
    },
 
    [NOTIF_ACT.showSuccess]({ commit }, payload) {
      const notification = {
        severity: 'success',
        message: typeof payload === 'string' ? payload : payload.message,
        closable: payload.closable !== false,
        ...payload,
      };
      commit(NOTIF_MUT.setNotification, notification);
    },
 
    [NOTIF_ACT.showWarning]({ commit }, payload) {
      const notification = {
        severity: 'warning',
        message: typeof payload === 'string' ? payload : payload.message,
        closable: payload.closable !== false,
        ...payload,
      };
      commit(NOTIF_MUT.setNotification, notification);
    },
 
    [NOTIF_ACT.showInfo]({ commit }, payload) {
      const notification = {
        severity: 'info',
        message: typeof payload === 'string' ? payload : payload.message,
        closable: payload.closable !== false,
        ...payload,
      };
      commit(NOTIF_MUT.setNotification, notification);
    },
 
    [NOTIF_ACT.clear]({ commit }) {
      commit(NOTIF_MUT.clearNotification);
    },
  },
  getters: {
    [NOTIF_GET.notification]: (state) => state.notification,
    [NOTIF_GET.hasNotification]: (state) => !!state.notification,
    [NOTIF_GET.isAuthError]: (state) => state.isAuthError,
  },
};