39 lines
948 B
TypeScript
39 lines
948 B
TypeScript
import { Injectable } from '@angular/core';
|
|
import { BehaviorSubject, Observable } from 'rxjs';
|
|
import { Task } from '../entity/task';
|
|
import { TaskPersistenceService } from './task-persistence.service';
|
|
|
|
@Injectable({
|
|
providedIn: 'root'
|
|
})
|
|
export class TaskService {
|
|
private _tasks: BehaviorSubject<Task[]> = new BehaviorSubject<Task[]>([]);
|
|
|
|
constructor(
|
|
private _taskPersistenceService: TaskPersistenceService
|
|
) {
|
|
const tasks = this._taskPersistenceService.getAll() || [];
|
|
this._tasks.next(tasks);
|
|
}
|
|
|
|
get tasks(): Observable<Task[]> {
|
|
return this._tasks.asObservable();
|
|
}
|
|
|
|
add(task: Task): void {
|
|
const tasks = this._tasks.value;
|
|
tasks.push(task);
|
|
this._tasks.next(tasks);
|
|
this._saveTasks();
|
|
}
|
|
|
|
private _saveTasks(): void {
|
|
this._taskPersistenceService.save(this._tasks.value);
|
|
}
|
|
|
|
refresh() {
|
|
const tasks = this._taskPersistenceService.getAll();
|
|
this._tasks.next(tasks);
|
|
}
|
|
}
|