diff --git a/src/app/components/add-task/add-task.component.ts b/src/app/components/add-task/add-task.component.ts index d0a2892..72e5407 100644 --- a/src/app/components/add-task/add-task.component.ts +++ b/src/app/components/add-task/add-task.component.ts @@ -14,6 +14,7 @@ import { AuthService } from '../../services/auth.service'; import { firstValueFrom, map } from 'rxjs'; import { TaskService } from '../../services/task.service'; import { ApiService } from '../../services/api.service'; +import { TaskUpdateService } from '../../services/task-update.service'; @Component({ selector: 'app-add-task', @@ -51,6 +52,7 @@ export class AddTaskComponent implements OnInit { private taskService: TaskService, private apiService: ApiService, private authService: AuthService, + private taskUpdateService: TaskUpdateService, private route: ActivatedRoute, private router: Router ) {} @@ -377,6 +379,7 @@ export class AddTaskComponent implements OnInit { this.apiService.saveNewTask(taskWithoutId).subscribe({ next: (response) => { + this.taskUpdateService.notifyTaskUpdate(); this.removeTaskData(ngForm); this.closeOverlay(); this.router.navigate(['/board']); diff --git a/src/app/components/board/board.component.ts b/src/app/components/board/board.component.ts index 724d1b0..4f95594 100644 --- a/src/app/components/board/board.component.ts +++ b/src/app/components/board/board.component.ts @@ -14,6 +14,7 @@ import { Task } from '../../interfaces/task.interface'; import { TaskService } from '../../services/task.service'; import { LoadingSpinnerComponent } from '../../shared/components/loading-spinner/loading-spinner.component'; import { finalize, Subject, takeUntil } from 'rxjs'; +import { TaskUpdateService } from '../../services/task-update.service'; @Component({ selector: 'app-board', @@ -44,6 +45,7 @@ export class BoardComponent { private sharedService: SharedService, private taskService: TaskService, private apiService: ApiService, + private taskUpdateService: TaskUpdateService, private router: Router ) {} @@ -58,6 +60,7 @@ export class BoardComponent { ngOnInit() { this.loadAllTasks(); + this.subscribeToTaskUpdates(); this.subscribeToDragDropEvents(); } @@ -89,6 +92,14 @@ export class BoardComponent { }, {} as { [key: string]: Task[] }); } + private subscribeToTaskUpdates() { + this.taskUpdateService.taskUpdated$ + .pipe(takeUntil(this.destroy$)) + .subscribe(() => { + this.loadAllTasks(); + }); + } + /** * Subscribes to events from the DragDropService and handles them. * @remarks diff --git a/src/app/services/task-update.service.ts b/src/app/services/task-update.service.ts new file mode 100644 index 0000000..3f64f68 --- /dev/null +++ b/src/app/services/task-update.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from '@angular/core'; +import { Subject } from 'rxjs'; + +@Injectable({ + providedIn: 'root', +}) +export class TaskUpdateService { + private taskUpdatedSubject = new Subject(); + taskUpdated$ = this.taskUpdatedSubject.asObservable(); + + notifyTaskUpdate() { + this.taskUpdatedSubject.next(); + } +} diff --git a/src/app/shared/components/overlay/task-overlay/task-overlay.component.ts b/src/app/shared/components/overlay/task-overlay/task-overlay.component.ts index cf58333..06393ed 100644 --- a/src/app/shared/components/overlay/task-overlay/task-overlay.component.ts +++ b/src/app/shared/components/overlay/task-overlay/task-overlay.component.ts @@ -11,6 +11,7 @@ import { TaskService } from '../../../../services/task.service'; import { AuthService } from '../../../../services/auth.service'; import { map } from 'rxjs'; import { ApiService } from '../../../../services/api.service'; +import { TaskUpdateService } from '../../../../services/task-update.service'; @Component({ selector: 'app-task-overlay', @@ -33,6 +34,7 @@ export class TaskOverlayComponent implements OnInit { private taskService: TaskService, private authService: AuthService, private apiService: ApiService, + private taskUpdateService: TaskUpdateService, private router: Router, private route: ActivatedRoute ) {} @@ -121,7 +123,7 @@ export class TaskOverlayComponent implements OnInit { deleteTask(taskId: string) { this.apiService.deleteTaskById(taskId).subscribe({ next: (task) => { - console.log('Task deleted successfully:', task); + this.taskUpdateService.notifyTaskUpdate(); }, error: (err) => { console.error('Error deleting task', err);