@@ -39,6 +39,7 @@ export default {
3939 data () {
4040 return {
4141 imageEditor: null ,
42+ observer: null ,
4243 }
4344 },
4445
@@ -133,14 +134,31 @@ export default {
133134 )
134135 this .imageEditor .render ()
135136 window .addEventListener (' keydown' , this .handleKeydown , true )
136- window .addEventListener (' DOMNodeInserted' , this .handleSfxModal )
137+
138+ this .observer = new MutationObserver ((mutations ) => {
139+ mutations .forEach ((mutation ) => {
140+ if (mutation .type === ' childList' ) {
141+ mutation .addedNodes .forEach ((node ) => {
142+ if (node .classList .contains (' FIE_root' ) || node .classList .contains (' SfxModal-Wrapper' )) {
143+ emit (' viewer:trapElements:changed' , node)
144+ }
145+ })
146+ }
147+ })
148+ })
149+ // using body instead of the editor ref because save modal is not mounted in editor
150+ this .observer .observe (document .body , {
151+ childList: true ,
152+ subtree: true ,
153+ })
137154
138155 },
139156
140157 beforeDestroy () {
141158 if (this .imageEditor ) {
142159 this .imageEditor .terminate ()
143160 }
161+ this .observer .disconnect ()
144162 window .removeEventListener (' keydown' , this .handleKeydown , true )
145163 },
146164
@@ -235,11 +253,16 @@ export default {
235253 try {
236254 const blob = await new Promise (resolve => imageCanvas .toBlob (resolve, mimeType, quality))
237255 const response = await axios .put (putUrl, new File ([blob], fullName))
238-
239256 logger .info (' Edited image saved!' , { response })
240257 showSuccess (t (' viewer' , ' Image saved' ))
241258 if (putUrl !== this .src ) {
242- emit (' files:node:created' , { fileid: parseInt (response? .headers ? .[' oc-fileid' ]? .split (' oc' )[0 ]) || null })
259+ const fileId = parseInt (response? .headers ? .[' oc-fileid' ]? .split (' oc' )[0 ]) || null
260+ emit (' editor:file:created' , putUrl)
261+ if (fileId) {
262+ const newParams = window .OCP .Files .Router .params
263+ newParams .fileId = fileId
264+ window .OCP .Files .Router .goToRoute (null , newParams, window .OCP .Files .Router .query )
265+ }
243266 } else {
244267 this .$emit (' updated' )
245268 const updatedFile = await rawStat (origin, decodeURI (pathname))
@@ -290,17 +313,6 @@ export default {
290313 }
291314 },
292315
293- /**
294- * Watch out for Modal inject in document root
295- * That way we can adjust the focusTrap
296- *
297- * @param {Event} event Dom insertion event
298- */
299- handleSfxModal (event ) {
300- if (event .target ? .classList && event .target .classList .contains (' SfxModal-Wrapper' )) {
301- emit (' viewer:trapElements:changed' , event .target )
302- }
303- },
304316 },
305317}
306318< / script>
0 commit comments