@Injectable()
class TodosQuery {
getVisibilityFilter$ = this.store.select(state => state.visibilityFilter);
getTodos$ = this.store.select(state => state.todos);
getVisibleTodos$ = Observable.combineLatest(
getVisibilityFilter$, getTodos$, this.getVisibleTodos
)
private getVisibleTodos = (visibilityFilter, todos) => {
switch (visibilityFilter) {
case 'SHOW_ALL':
return todos
case 'SHOW_COMPLETED':
return todos.filter(t => t.completed)
case 'SHOW_ACTIVE':
return todos.filter(t => !t.completed)
}
}
constructor(private store: Store<AppState>) {}
}