@@ -139,11 +139,6 @@ document.addEventListener("click", function (event) {
139139 const result = response . responseJSON ;
140140 if ( result . status === "ok" ) {
141141 notificationBar . show ( target . dataset . successMessage ) ;
142- // Hide pause, show resume
143- const pauseItem = document . getElementById ( "pgv-pause" ) ;
144- const resumeItem = document . getElementById ( "pgv-resume" ) ;
145- if ( pauseItem ) pauseItem . style . display = "none" ;
146- if ( resumeItem ) resumeItem . style . display = "" ;
147142 } else {
148143 notificationBar . show ( result . message , notificationBar . WARNING ) ;
149144 }
@@ -158,19 +153,14 @@ document.addEventListener("click", function (event) {
158153 const result = response . responseJSON ;
159154 if ( result . status === "ok" ) {
160155 notificationBar . show ( target . dataset . successMessage ) ;
161- // Hide resume, show pause
162- const pauseItem = document . getElementById ( "pgv-pause" ) ;
163- const resumeItem = document . getElementById ( "pgv-resume" ) ;
164- if ( resumeItem ) resumeItem . style . display = "none" ;
165- if ( pauseItem ) pauseItem . style . display = "" ;
166156 } else {
167157 notificationBar . show ( result . message , notificationBar . WARNING ) ;
168158 }
169159 } ) ;
170160 }
171161} ) ;
172162
173- function updatePauseElements ( ) {
163+ function updatePauseElements ( enablePolling = false ) {
174164 const pausedBanner = document . getElementById ( "pgv-paused-banner" ) ;
175165 const pauseMenuItem = document . getElementById ( "pgv-pause" ) ;
176166 const resumeMenuItem = document . getElementById ( "pgv-resume" ) ;
@@ -208,16 +198,17 @@ function updatePauseElements() {
208198 }
209199 }
210200
211- let updateInterval = 5000 ;
212- // update more frequently when the pause/resume menu items are visible
213- if ( pauseMenuItem || resumeMenuItem ) {
214- updateInterval = 1000 ;
201+ if ( enablePolling ) {
202+ setTimeout ( ( ) => updatePauseElements ( true ) , 1000 ) ;
215203 }
216- setTimeout ( updatePauseElements ( ) , updateInterval ) ;
217204 } else {
218205 pausedBanner . style . display = "none" ;
219- pauseMenuItem . style . display = "none" ;
220- resumeMenuItem . style . display = "none" ;
206+ if ( pauseMenuItem ) {
207+ pauseMenuItem . style . display = "none" ;
208+ }
209+ if ( resumeMenuItem ) {
210+ resumeMenuItem . style . display = "none" ;
211+ }
221212 }
222213 }
223214 return null ;
@@ -227,4 +218,39 @@ function updatePauseElements() {
227218 } ) ;
228219}
229220
230- updatePauseElements ( ) ;
221+ const cancelSplitButton = document . getElementById ( "pgv-cancel-split-button" ) ;
222+ if ( cancelSplitButton ) {
223+ let isPauseResumeMenuOpen = false ;
224+
225+ const pauseResumeMenuOpenObserver = new MutationObserver ( ( ) => {
226+ const pauseMenuItem = document . getElementById ( "pgv-pause" ) ;
227+ const resumeMenuItem = document . getElementById ( "pgv-resume" ) ;
228+ const menuItemsExist = pauseMenuItem || resumeMenuItem ;
229+
230+ if ( menuItemsExist && ! isPauseResumeMenuOpen ) {
231+ isPauseResumeMenuOpen = true ;
232+ setTimeout ( ( ) => updatePauseElements ( false ) , 0 ) ;
233+ } else if ( ! menuItemsExist && isPauseResumeMenuOpen ) {
234+ isPauseResumeMenuOpen = false ;
235+ }
236+ } ) ;
237+
238+ pauseResumeMenuOpenObserver . observe ( cancelSplitButton , {
239+ childList : true ,
240+ subtree : true ,
241+ } ) ;
242+
243+ const cancelButtonHiddenObserver = new MutationObserver ( ( ) => {
244+ if ( ! cancelSplitButton || cancelSplitButton . style . display === "none" ) {
245+ pauseResumeMenuOpenObserver . disconnect ( ) ;
246+ cancelButtonHiddenObserver . disconnect ( ) ;
247+ }
248+ } ) ;
249+
250+ cancelButtonHiddenObserver . observe ( cancelSplitButton , {
251+ attributes : true ,
252+ attributeFilter : [ "style" ] ,
253+ } ) ;
254+ }
255+
256+ setTimeout ( ( ) => updatePauseElements ( true ) , 0 ) ;
0 commit comments