/
spinner-visibility.service.ts
36 lines (30 loc) · 1.25 KB
/
spinner-visibility.service.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
import { Injectable } from '@angular/core';
import { Observable, ReplaySubject } from 'rxjs';
import { PendingInterceptorService } from './pending-interceptor.service';
@Injectable({
providedIn: 'root'
})
export class SpinnerVisibilityService {
private _visibilitySubject = new ReplaySubject<boolean>(1);
constructor(private pendingInterceptorService: PendingInterceptorService) {
}
get visibilityObservable$(): Observable<boolean> {
return this._visibilitySubject.asObservable();
}
public show(): void {
this.pendingInterceptorService.forceByPass = true;
this._visibilitySubject.next(true);
}
public hide(): void {
this._visibilitySubject.next(false);
this.pendingInterceptorService.forceByPass = false;
}
}