import { ChangeDetectionStrategy, Component, signal } from '@angular/core'; import { toSignal } from '@angular/core/rxjs-interop'; import { startWith, switchMap } from 'rxjs'; import { injectWebsocketService, WSEvents } from '@/core/services/websocket.service'; import { OndemandTriggerComponent } from '@/features/ondemand/ondemand-trigger/ondemand-trigger.component'; import { OndemandVideoComponent } from '@/features/ondemand/ondemand-video/ondemand-video.component'; import { OndemandVideo } from '@/features/ondemand/ondemand.models'; import { injectOndemandService, OndemandService } from '@/features/ondemand/ondemand.service'; import { MainLayoutComponent } from '@/shared/layout/main-layout/main-layout.component'; import { ModalComponent } from '@/shared/ui/modal/modal.component'; @Component({ selector: 'app-ondemands', templateUrl: './ondemands.component.html', styleUrls: ['./ondemands.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, providers: [OndemandService], imports: [ MainLayoutComponent, OndemandTriggerComponent, OndemandVideoComponent, ModalComponent, ], }) export class OndemandsComponent { private ondemandServ = injectOndemandService(); selectedOndemand = signal(null); ondemands$ = injectWebsocketService() .listen(WSEvents.ONDEMAND) .pipe( startWith(true), switchMap(() => this.ondemandServ.getOndemandVideos()) ); ondemands = toSignal(this.ondemands$, { initialValue: [] as OndemandVideo[] }); }