diff --git a/src/redux/elemento/reducer/atualizaRevisao.ts b/src/redux/elemento/reducer/atualizaRevisao.ts index 44117076..31922c68 100644 --- a/src/redux/elemento/reducer/atualizaRevisao.ts +++ b/src/redux/elemento/reducer/atualizaRevisao.ts @@ -401,7 +401,9 @@ const atualizarLexmlIdEmElementosDeRevisoes = (state: State): void => { revisoes = getRevisoesElemento(state.revisoes || []).filter(r => isRevisaoPrincipal(r) && isRevisaoDeExclusao(r)); revisoes.forEach(r => { const d = getDispositivoFromElemento(state.articulacao!, r.elementoAposRevisao.hierarquia!.pai!)!; - r.elementoAposRevisao.hierarquia!.pai!.lexmlId = d.id; + if (d) { + r.elementoAposRevisao.hierarquia!.pai!.lexmlId = d.id; + } }); }; diff --git a/src/redux/elemento/reducer/rejeitaRevisao.ts b/src/redux/elemento/reducer/rejeitaRevisao.ts index 1584caa6..e9a76cff 100644 --- a/src/redux/elemento/reducer/rejeitaRevisao.ts +++ b/src/redux/elemento/reducer/rejeitaRevisao.ts @@ -23,7 +23,7 @@ import { isRevisaoPrincipal, } from '../util/revisaoUtil'; import { buildPast } from '../util/stateReducerUtil'; -import { incluir } from '../util/undoRedoReducerUtil'; +import { ajustarAtributosAgrupadorIncluidoPorUndoRedo, ajustarHierarquivoAgrupadorIncluidoPorUndoRedo, incluir } from '../util/undoRedoReducerUtil'; import { agrupaElemento } from './agrupaElemento'; import { atualizaTextoElemento } from './atualizaTextoElemento'; import { removeElemento } from './removeElemento'; @@ -185,6 +185,25 @@ const rejeitaExclusao = (state: State, revisao: RevisaoElemento): StateEvent[] = }, }); + const ev: StateEvent = { stateType: StateType.SituacaoElementoModificada, elementos: [elementoASerIncluido as Elemento] }; + ajustarAtributosAgrupadorIncluidoPorUndoRedo(state.articulacao!, [ev], tempState.ui!.events); + ajustarHierarquivoAgrupadorIncluidoPorUndoRedo(state.articulacao!, [ev], tempState.ui!.events); + + // Atualiza elemento que seja agrupador de artigo em alteração de norma em eventos de inclusão + // Isso é necessário porque a rejeição da exclusão desse tipo de dispositivo pode ter alterado a hierarquia + tempState + .ui!.events!.filter(ev => ev.stateType === StateType.ElementoIncluido) + .forEach(ev => { + ev.elementos = ev.elementos?.map(e => { + if (e.agrupador && e.dispositivoAlteracao) { + const d = getDispositivoFromElemento(tempState.articulacao!, e)!; + return createElemento(d); + } else { + return e; + } + }); + }); + result.push(...tempState.ui!.events!); } else { result.push({ stateType: StateType.ElementoIncluido, elementos: incluir(state, evento, eventoAux) });