blob: 9c3389f431b8a25dcb5a72e371b46e2f6d5cac9f [file] [log] [blame]
Matteo Scandolo035c5932016-12-14 09:55:15 -08001/// <reference path="../../../../typings/index.d.ts"/>
2
3import {BehaviorSubject, Observable} from 'rxjs/Rx';
4import {IWSEvent, IWSEventService} from '../websocket/global';
5import {IXosResourceService} from '../rest/slices.rest';
6import {IStoreHelpersService} from '../helpers/store.helpers';
7
8export interface IStoreService {
9 query(): Observable<any>;
10}
11
12export class SliceStore {
13 static $inject = ['WebSocket', 'StoreHelpers', 'SlicesRest'];
14 private _slices: BehaviorSubject<any[]> = new BehaviorSubject([]);
15 constructor(
16 private webSocket: IWSEventService,
17 private storeHelpers: IStoreHelpersService,
18 private sliceService: IXosResourceService
19 ) {
20 this.loadInitialData();
21 this.webSocket.list()
22 .filter((e: IWSEvent) => e.model === 'Slice')
23 .subscribe(
24 (event: IWSEvent) => {
25 this.storeHelpers.updateCollection(event, this._slices);
26 }
27 );
28 }
29
30 query() {
31 return this._slices.asObservable();
32 }
33
34 private loadInitialData() {
35 this.sliceService.getResource().query().$promise
36 .then(
37 res => {
38 this._slices.next(res);
39 },
40 err => console.log('Error retrieving Slices', err)
41 );
42 }
43}