@@ -190,18 +190,30 @@ async function main(items) {
190190 try {
191191 const { name } = await sendMessage ( { query : 'getSession' , jiraUrl } ) ;
192192
193- // Check page if content changed (for AJAX pages)
194- document . addEventListener ( 'DOMNodeInserted' , ( ) => {
195- if ( ( new Date ( ) ) . getTime ( ) - lastRefresh >= REFRESH_TIMEOUT ) {
196- lastRefresh = ( new Date ( ) ) . getTime ( ) ;
197- checkPage ( ) ;
198- }
193+ var observer = new MutationObserver ( function ( mutations ) {
194+ mutations . forEach ( function ( mutation ) {
195+ // Check page if content changed (for AJAX pages)
196+ if ( mutation . type !== 'attributes' ) {
197+ return ; // just skip
198+ }
199+
200+ if ( ( new Date ( ) ) . getTime ( ) - lastRefresh >= REFRESH_TIMEOUT ) {
201+ lastRefresh = ( new Date ( ) ) . getTime ( ) ;
202+ checkPage ( ) ;
203+ }
204+ } ) ;
199205 } ) ;
200206
207+ var observerConfig = { attributes : true , childList : true , characterData : true , subtree : true } ;
208+ var targetNode = document . body ;
209+
210+ observer . observe ( targetNode , observerConfig ) ;
211+
201212 // Check page initially
202213 checkPage ( ) ;
203214 } catch ( e ) {
204- console . error ( `You are not logged in to Jira at http://${ jiraUrl } - Please login.` ) ;
215+ console . error ( `You are not logged in to Jira at ${ jiraUrl } - Please login.` ) ;
216+ console . error ( e ) ;
205217 }
206218}
207219
@@ -309,6 +321,10 @@ async function handlePrCreatePage() {
309321 }
310322
311323 let body = document . querySelector ( 'textarea#pull_request_body' ) ;
324+ if ( ! body ) {
325+ return ;
326+ }
327+
312328 if ( body . getAttribute ( 'jira-loading' ) === 'true' ) {
313329 return false ; //Already loading
314330 }
0 commit comments