import { ChangeDetectionStrategy, Component, Inject } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { PROJECTS_CONFIG_TOKEN } from '@rucken/todo-core'; import { CustomProject } from '@rucken/todo-ionic'; import { BindIoInner } from 'ngx-bind-io'; import { DynamicRepository, IRestProviderOptions, Repository } from 'ngx-repository'; import { Observable } from 'rxjs'; import { concatMap, map } from 'rxjs/operators'; import { environment } from '../../../../environments/environment'; @BindIoInner() @Component({ selector: 'tasks-frame', templateUrl: './tasks-frame.component.html', changeDetection: ChangeDetectionStrategy.OnPush }) export class TasksFrameComponent { apiUrl = environment.apiUrl; title$: Observable; id$: Observable; project$: Observable; private _repository: Repository; constructor( public activatedRoute: ActivatedRoute, private _dynamicRepository: DynamicRepository, @Inject(PROJECTS_CONFIG_TOKEN) private _projectsConfig: IRestProviderOptions, ) { this.title$ = activatedRoute.data.pipe( map(data => data && data.meta && data.meta.title) ); this._repository = this._dynamicRepository.fork(CustomProject); this._repository.useRest({ apiUrl: this.apiUrl, ...this._projectsConfig, autoload: false }); this.id$ = activatedRoute.params.pipe( map(params => params.id) ); this.project$ = this.id$.pipe( concatMap(id => this._repository.load(id)) ); } }