From 2d7544197703a6c34c8553b0b66a5c5c43b03ecb Mon Sep 17 00:00:00 2001 From: sashaqred Date: Wed, 15 Apr 2020 11:42:52 +0300 Subject: [PATCH] refactor: improve observable layout change sharing --- src/app/@core/utils/layout.service.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/app/@core/utils/layout.service.ts diff --git a/src/app/@core/utils/layout.service.ts b/src/app/@core/utils/layout.service.ts new file mode 100644 index 00000000..2a8fb82d --- /dev/null +++ b/src/app/@core/utils/layout.service.ts @@ -0,0 +1,20 @@ +import { Injectable } from '@angular/core'; +import { Observable, Subject } from 'rxjs'; +import { delay, shareReplay } from 'rxjs/operators'; + +@Injectable() +export class LayoutService { + + protected layoutSize$ = new Subject(); + protected layoutSizeChange$ = this.layoutSize$.pipe( + shareReplay({ refCount: true }), + ); + + changeLayoutSize() { + this.layoutSize$.next(); + } + + onChangeLayoutSize(): Observable { + return this.layoutSizeChange$.pipe(delay(1)); + } +}