@@ -17,6 +17,7 @@ import {
1717import { toObservable , toSignal } from '@angular/core/rxjs-interop' ;
1818import { MatRippleModule } from '@angular/material/core' ;
1919import { MatMenuModule } from '@angular/material/menu' ;
20+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner' ;
2021import { MatTooltipModule } from '@angular/material/tooltip' ;
2122import { Router } from '@angular/router' ;
2223import { currentUser , notifyInfo , SettingsService } from '@placeos/common' ;
@@ -207,7 +208,14 @@ import { SignageStateService } from './signage-state.service';
207208 }
208209 </div>
209210 </div>
210- @if (media().length > 0) {
211+ @if (loading()) {
212+ <div
213+ class="mx-auto flex flex-1 flex-col items-center justify-center space-y-2 p-8 opacity-30"
214+ >
215+ <mat-spinner diameter="32" />
216+ <p>{{ 'COMMON.LOADING' | translate }}...</p>
217+ </div>
218+ } @else if (media().length > 0) {
211219 <div
212220 cdkDropList
213221 class="flex h-1/2 flex-1 flex-col space-y-2 overflow-auto p-2"
@@ -351,6 +359,7 @@ import { SignageStateService } from './signage-state.service';
351359 DragDropModule ,
352360 MatTooltipModule ,
353361 MediaDurationPipe ,
362+ MatProgressSpinnerModule ,
354363 ] ,
355364} )
356365export class SignagePlaylistMediaListComponent implements OnChanges {
@@ -362,6 +371,7 @@ export class SignagePlaylistMediaListComponent implements OnChanges {
362371 public readonly playlist = input ( '' ) ;
363372 public readonly playlist_count = input ( 0 ) ;
364373 public readonly approved = signal ( 0 ) ;
374+ public readonly loading = signal ( false ) ;
365375
366376 public playlist_ids : string [ ] = [ ] ;
367377
@@ -428,12 +438,16 @@ export class SignagePlaylistMediaListComponent implements OnChanges {
428438 toObservable ( this . _playlist_media_observable ) . pipe (
429439 filter ( ( playlist ) => ! ! playlist ) ,
430440 debounceTime ( 300 ) ,
441+ tap ( ( ) => this . loading . set ( true ) ) ,
431442 switchMap ( ( playlist ) =>
432443 listSignagePlaylistMedia ( playlist . id ) . pipe (
433444 catchError ( ( ) => of ( { id : '' , items : [ ] , approved : 0 } ) ) ,
434445 ) ,
435446 ) ,
436- tap ( ( _ : any ) => this . approved . set ( _ . approved ) ) ,
447+ tap ( ( _ : any ) => {
448+ this . approved . set ( _ . approved ) ;
449+ this . loading . set ( false ) ;
450+ } ) ,
437451 ) ,
438452 { initialValue : { id : '' , items : [ ] , approved : 0 } } ,
439453 ) ;
0 commit comments