@@ -119,7 +119,7 @@ export class ItemBitstreamsService {
119119 */
120120 protected selectionAction$ : BehaviorSubject < SelectionAction > = new BehaviorSubject ( null ) ;
121121
122- protected isPerformingMoveRequest = false ;
122+ protected isPerformingMoveRequest : BehaviorSubject < boolean > = new BehaviorSubject ( false ) ;
123123
124124 constructor (
125125 protected notificationsService : NotificationsService ,
@@ -221,7 +221,7 @@ export class ItemBitstreamsService {
221221 cancelSelection ( ) {
222222 const selected = this . getSelectedBitstream ( ) ;
223223
224- if ( hasNoValue ( selected ) || this . isPerformingMoveRequest ) {
224+ if ( hasNoValue ( selected ) || this . getPerformingMoveRequest ( ) ) {
225225 return ;
226226 }
227227
@@ -247,7 +247,7 @@ export class ItemBitstreamsService {
247247 moveSelectedBitstreamUp ( ) {
248248 const selected = this . getSelectedBitstream ( ) ;
249249
250- if ( hasNoValue ( selected ) || this . isPerformingMoveRequest ) {
250+ if ( hasNoValue ( selected ) || this . getPerformingMoveRequest ( ) ) {
251251 return ;
252252 }
253253
@@ -272,7 +272,7 @@ export class ItemBitstreamsService {
272272 moveSelectedBitstreamDown ( ) {
273273 const selected = this . getSelectedBitstream ( ) ;
274274
275- if ( hasNoValue ( selected ) || this . isPerformingMoveRequest ) {
275+ if ( hasNoValue ( selected ) || this . getPerformingMoveRequest ( ) ) {
276276 return ;
277277 }
278278
@@ -299,7 +299,7 @@ export class ItemBitstreamsService {
299299 * @param finish Optional: Function to execute once the response has been received
300300 */
301301 performBitstreamMoveRequest ( bundle : Bundle , fromIndex : number , toIndex : number , finish ?: ( ) => void ) {
302- if ( this . isPerformingMoveRequest ) {
302+ if ( this . getPerformingMoveRequest ( ) ) {
303303 console . warn ( 'Attempted to perform move request while previous request has not completed yet' ) ;
304304 return ;
305305 }
@@ -310,18 +310,34 @@ export class ItemBitstreamsService {
310310 path : `/_links/bitstreams/${ toIndex } /href` ,
311311 } ;
312312
313- this . isPerformingMoveRequest = true ;
313+ this . announceLoading ( ) ;
314+ this . isPerformingMoveRequest . next ( true ) ;
314315 this . bundleService . patch ( bundle , [ moveOperation ] ) . pipe (
315316 getFirstCompletedRemoteData ( ) ,
316317 tap ( ( response : RemoteData < Bundle > ) => this . displayFailedResponseNotifications ( MOVE_KEY , [ response ] ) ) ,
317318 switchMap ( ( ) => this . requestService . setStaleByHrefSubstring ( bundle . self ) ) ,
318319 take ( 1 ) ,
319320 ) . subscribe ( ( ) => {
320- this . isPerformingMoveRequest = false ;
321+ console . log ( 'got here!' ) ;
322+ this . isPerformingMoveRequest . next ( false ) ;
321323 finish ?.( ) ;
322324 } ) ;
323325 }
324326
327+ /**
328+ * Whether the service currently is processing a 'move' request
329+ */
330+ getPerformingMoveRequest ( ) : boolean {
331+ return this . isPerformingMoveRequest . value ;
332+ }
333+
334+ /**
335+ * Returns an observable which emits when the service starts, or ends, processing a 'move' request
336+ */
337+ getPerformingMoveRequest$ ( ) : Observable < boolean > {
338+ return this . isPerformingMoveRequest ;
339+ }
340+
325341 /**
326342 * Returns the pagination options to use when fetching the bundles
327343 */
@@ -526,4 +542,12 @@ export class ItemBitstreamsService {
526542 { bitstream : bitstreamName } ) ;
527543 this . liveRegionService . addMessage ( message ) ;
528544 }
545+
546+ /**
547+ * Adds a message to the live region mentioning that the
548+ */
549+ announceLoading ( ) {
550+ const message = this . translateService . instant ( 'item.edit.bitstreams.edit.live.loading' ) ;
551+ this . liveRegionService . addMessage ( message ) ;
552+ }
529553}
0 commit comments