From b5c00020315cda1f99e29b5a2755ab15b4318a4f Mon Sep 17 00:00:00 2001 From: Sheik Althaf Date: Thu, 6 Jun 2024 11:34:07 +0530 Subject: [PATCH] refactor: migrate to signals for projects --- .../project-dialog.component.ts | 15 +++++-------- .../projects-view.component.html | 2 +- .../projects-view/projects-view.component.ts | 22 ++++++++----------- 3 files changed, 16 insertions(+), 23 deletions(-) diff --git a/src/app/projects/project-dialog/project-dialog.component.ts b/src/app/projects/project-dialog/project-dialog.component.ts index 9fe535c..f79e413 100644 --- a/src/app/projects/project-dialog/project-dialog.component.ts +++ b/src/app/projects/project-dialog/project-dialog.component.ts @@ -1,4 +1,4 @@ -import { Component, Inject, OnInit } from '@angular/core'; +import { Component, inject } from '@angular/core'; import { FormControl, Validators, ReactiveFormsModule } from '@angular/forms'; import { ErrorStateMatcher } from '@angular/material/core'; import { @@ -91,7 +91,10 @@ const verifyProjectName = (projectName: string) => { MatDialogClose ] }) -export class ProjectDialogComponent implements OnInit { +export class ProjectDialogComponent { + public data = inject(MAT_DIALOG_DATA); + private store = inject>(Store); + public dialogRef = inject>(MatDialogRef); mode: ProjectDialogMode; title: string; project: Partial; @@ -104,13 +107,7 @@ export class ProjectDialogComponent implements OnInit { verifyProjectName = new FormControl(''); errorStateMatcher = new CustomErrorStateMatcher(); - constructor( - @Inject(MAT_DIALOG_DATA) public data: ProjectDialogData, - private store: Store, - public dialogRef: MatDialogRef - ) {} - - ngOnInit() { + constructor() { const { title, project, mode = ProjectDialogMode.Create, submitButtonText } = this.data; this.project = project ? project : { name: '' }; diff --git a/src/app/projects/projects-view/projects-view.component.html b/src/app/projects/projects-view/projects-view.component.html index 660e65f..efd8a63 100644 --- a/src/app/projects/projects-view/projects-view.component.html +++ b/src/app/projects/projects-view/projects-view.component.html @@ -18,7 +18,7 @@
Your Projects
add Add Project - +

{{ project.name }}

diff --git a/src/app/projects/projects-view/projects-view.component.ts b/src/app/projects/projects-view/projects-view.component.ts index 5a07954..6811fbc 100644 --- a/src/app/projects/projects-view/projects-view.component.ts +++ b/src/app/projects/projects-view/projects-view.component.ts @@ -1,8 +1,8 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, inject } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { Router } from '@angular/router'; -import { select, Store } from '@ngrx/store'; -import { asyncScheduler, Observable } from 'rxjs'; +import { Store } from '@ngrx/store'; +import { asyncScheduler } from 'rxjs'; import { filter, map, observeOn } from 'rxjs/operators'; import { ApplicationState } from '../../state/app.state'; import { Project } from '../models/projects.model'; @@ -18,7 +18,7 @@ import { import { AddProject, DeleteProject, EditProject } from '../state/projects.actions'; import { ProjectsSelectors } from '../state/projects.selectors'; import { MatIconButton } from '@angular/material/button'; -import { NgFor, AsyncPipe, PercentPipe } from '@angular/common'; +import { NgFor, PercentPipe } from '@angular/common'; import { MatIcon } from '@angular/material/icon'; import { MatRipple } from '@angular/material/core'; import { MatCard, MatCardContent, MatCardActions } from '@angular/material/card'; @@ -40,7 +40,6 @@ import { FooterComponent } from 'src/app/shared/footer/footer.component'; MatCardContent, MatCardActions, MatIconButton, - AsyncPipe, PercentPipe, ToolbarComponent, ToolbarLogoComponent, @@ -48,14 +47,11 @@ import { FooterComponent } from 'src/app/shared/footer/footer.component'; FooterComponent ] }) -export class ProjectsViewComponent implements OnInit { - projects$: Observable>; - - constructor(private store: Store, private router: Router, private dialog: MatDialog) {} - - ngOnInit() { - this.projects$ = this.store.pipe(select(ProjectsSelectors.getProjects)); - } +export class ProjectsViewComponent { + private store = inject>(Store); + private router = inject(Router); + private dialog = inject(MatDialog); + projects = this.store.selectSignal(ProjectsSelectors.getProjects); navigateToProject(projectId: string) { this.router.navigate([`/${projectId}/checklist`]);