import { createSlice, isAnyOf } from '@reduxjs/toolkit' import { initializeApp } from 'domains/app/actions' import { initializeConfig } from 'domains/config/actions' import { setLocale } from 'domains/i18n/actions' import { getConversation } from 'domains/store/actions' import { initializeVisibility, setVisibility } from 'domains/visibility/actions' type InterruptError = { name: string message: string langKey: string originalError: Error originalEvent: Error action?: 'reset' } type InterruptState = { error?: InterruptError } const initialState: InterruptState = { error: undefined, } export const interruptSlice = createSlice({ name: 'interrupt', initialState, reducers: { setInterrupt: (state, action) => { state.error = action.payload }, clearInterrupt: () => initialState, }, extraReducers: (builder) => { builder .addCase(initializeConfig.pending, () => initialState) .addMatcher( isAnyOf( initializeApp.rejected, initializeConfig.rejected, setLocale.rejected, setVisibility.rejected, initializeVisibility.rejected, getConversation.rejected, ), (state, { payload }) => { state.error = payload }, ) }, }) export const { setInterrupt, clearInterrupt } = interruptSlice.actions export default interruptSlice.reducer