diff --git a/apps/mobile/src/app/app.component.ts b/apps/mobile/src/app/app.component.ts index a65b791..6f9b0fc 100644 --- a/apps/mobile/src/app/app.component.ts +++ b/apps/mobile/src/app/app.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, inject } from '@angular/core'; import { SwUpdate } from '@angular/service-worker'; import { ToastService } from '@task-ninja/mobile/shared/data-access'; @@ -8,7 +8,8 @@ import { ToastService } from '@task-ninja/mobile/shared/data-access'; styleUrls: ['app.component.scss'], }) export class AppComponent implements OnInit { - constructor(private swUpdate: SwUpdate, private toastService: ToastService) {} + private readonly swUpdate = inject(SwUpdate); + private readonly toastService = inject(ToastService); async ngOnInit() { this.swUpdate.versionUpdates.subscribe(async (res) => { diff --git a/libs/mobile/auth/data-access/src/lib/services/auth.service.ts b/libs/mobile/auth/data-access/src/lib/services/auth.service.ts index afaf8bd..4e89d4d 100644 --- a/libs/mobile/auth/data-access/src/lib/services/auth.service.ts +++ b/libs/mobile/auth/data-access/src/lib/services/auth.service.ts @@ -1,4 +1,4 @@ -import { Injectable } from '@angular/core'; +import { Injectable, inject } from '@angular/core'; import { Auth, UserCredential, @@ -13,7 +13,8 @@ import { Firestore, doc, setDoc } from '@angular/fire/firestore'; providedIn: 'root', }) export class AuthService { - constructor(private auth: Auth, private firestore: Firestore) {} + private readonly auth = inject(Auth); + private readonly firestore = inject(Firestore); async signUp( email: string, diff --git a/libs/mobile/auth/feature/password-reset/src/lib/password-reset.page.ts b/libs/mobile/auth/feature/password-reset/src/lib/password-reset.page.ts index 412bc91..16c8163 100644 --- a/libs/mobile/auth/feature/password-reset/src/lib/password-reset.page.ts +++ b/libs/mobile/auth/feature/password-reset/src/lib/password-reset.page.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, inject } from '@angular/core'; import { AbstractControl, FormBuilder, @@ -15,6 +15,11 @@ import { ToastService } from '@task-ninja/mobile/shared/data-access'; styleUrls: ['./password-reset.page.scss'], }) export class PasswordResetPageComponent { + private readonly formBuilder = inject(FormBuilder); + private readonly authService = inject(AuthService); + private readonly toastService = inject(ToastService); + private readonly router = inject(Router); + passwordResetForm: FormGroup = this.formBuilder.group({ email: [null, [Validators.required, Validators.email]], }); @@ -22,13 +27,6 @@ export class PasswordResetPageComponent { currentYear: number = new Date().getFullYear(); submitAttempt = false; - constructor( - private formBuilder: FormBuilder, - private authService: AuthService, - private toastService: ToastService, - private router: Router - ) {} - // Maybe rename this function into formControls // to make it more readable in the future get f(): { [key: string]: AbstractControl } { diff --git a/libs/mobile/auth/feature/signin/src/lib/signin.page.ts b/libs/mobile/auth/feature/signin/src/lib/signin.page.ts index a798a69..20d56c5 100644 --- a/libs/mobile/auth/feature/signin/src/lib/signin.page.ts +++ b/libs/mobile/auth/feature/signin/src/lib/signin.page.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, inject } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { Router } from '@angular/router'; import { LoadingController } from '@ionic/angular'; @@ -11,6 +11,12 @@ import { ToastService } from '@task-ninja/mobile/shared/data-access'; styleUrls: ['./signin.page.scss'], }) export class SigninPageComponent { + private readonly authService = inject(AuthService); + private readonly loadingController = inject(LoadingController); + private readonly formBuilder = inject(FormBuilder); + private readonly toastService = inject(ToastService); + private readonly router = inject(Router); + currentYear: number = new Date().getFullYear(); submitAttempt = false; @@ -22,14 +28,6 @@ export class SigninPageComponent { ], }); - constructor( - private authService: AuthService, - private loadingController: LoadingController, - private formBuilder: FormBuilder, - private toastService: ToastService, - private router: Router - ) {} - // Sign in async signIn() { this.submitAttempt = true; diff --git a/libs/mobile/auth/feature/signup/src/lib/signup.page.ts b/libs/mobile/auth/feature/signup/src/lib/signup.page.ts index b3aad06..13f4265 100644 --- a/libs/mobile/auth/feature/signup/src/lib/signup.page.ts +++ b/libs/mobile/auth/feature/signup/src/lib/signup.page.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, inject } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { Router } from '@angular/router'; import { LoadingController } from '@ionic/angular'; @@ -11,6 +11,12 @@ import { ToastService } from '@task-ninja/mobile/shared/data-access'; styleUrls: ['./signup.page.scss'], }) export class SignupPageComponent { + private readonly authService = inject(AuthService); + private readonly loadingController = inject(LoadingController); + private readonly formBuilder = inject(FormBuilder); + private readonly toastService = inject(ToastService); + private readonly router = inject(Router); + currentYear: number = new Date().getFullYear(); submitAttempt = false; @@ -27,14 +33,6 @@ export class SignupPageComponent { ], }); - constructor( - private authService: AuthService, - private loadingController: LoadingController, - private formBuilder: FormBuilder, - private toastService: ToastService, - private router: Router - ) {} - // Sign up async signUp() { this.submitAttempt = true; diff --git a/libs/mobile/home/feature/src/lib/home.page.ts b/libs/mobile/home/feature/src/lib/home.page.ts index 209c365..352b1eb 100644 --- a/libs/mobile/home/feature/src/lib/home.page.ts +++ b/libs/mobile/home/feature/src/lib/home.page.ts @@ -1,4 +1,4 @@ -import { Component, OnDestroy, OnInit } from '@angular/core'; +import { Component, OnDestroy, OnInit, inject } from '@angular/core'; import { Auth } from '@angular/fire/auth'; import { Task, TaskService } from '@task-ninja/mobile/tasks/data-access'; import { Subject, takeUntil } from 'rxjs'; @@ -9,6 +9,9 @@ import { Subject, takeUntil } from 'rxjs'; styleUrls: ['home.page.scss'], }) export class HomePageComponent implements OnInit, OnDestroy { + private readonly taskService = inject(TaskService); + private readonly auth = inject(Auth); + ownedTasksLoaded = false; tasksLoaded = false; ownedTasks: Task[] = []; @@ -16,8 +19,6 @@ export class HomePageComponent implements OnInit, OnDestroy { private isDestroyed$: Subject = new Subject(); currentUser: string; - constructor(private taskService: TaskService, private auth: Auth) {} - ngOnInit(): void { this.currentUser = this.auth.currentUser?.displayName as string; diff --git a/libs/mobile/shared/data-access/src/lib/services/toast/toast.service.ts b/libs/mobile/shared/data-access/src/lib/services/toast/toast.service.ts index ee08a93..4160d84 100644 --- a/libs/mobile/shared/data-access/src/lib/services/toast/toast.service.ts +++ b/libs/mobile/shared/data-access/src/lib/services/toast/toast.service.ts @@ -1,11 +1,11 @@ -import { Injectable } from '@angular/core'; +import { Injectable, inject } from '@angular/core'; import { ToastController } from '@ionic/angular'; @Injectable({ providedIn: 'root', }) export class ToastService { - constructor(public toastController: ToastController) {} + private readonly toastController = inject(ToastController); async presentToast( header: string, diff --git a/libs/mobile/shared/feature/filters/src/lib/filters/filters.component.ts b/libs/mobile/shared/feature/filters/src/lib/filters/filters.component.ts index 3f91481..fa69245 100644 --- a/libs/mobile/shared/feature/filters/src/lib/filters/filters.component.ts +++ b/libs/mobile/shared/feature/filters/src/lib/filters/filters.component.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, inject } from '@angular/core'; import { ModalController } from '@ionic/angular'; import { Category } from '@task-ninja/mobile/tasks/data-access'; @@ -8,6 +8,8 @@ import { Category } from '@task-ninja/mobile/tasks/data-access'; styleUrls: ['./filters.component.scss'], }) export class FiltersComponent { + private readonly modalController = inject(ModalController); + customPopoverOptions: any = { message: 'Select one', cssClass: 'popover-in-modal', @@ -43,8 +45,6 @@ export class FiltersComponent { }, ]; - constructor(private modalController: ModalController) {} - // Cancel cancel() { // Dismiss modal diff --git a/libs/mobile/shared/feature/settings/src/lib/settings/settings.component.html b/libs/mobile/shared/feature/settings/src/lib/settings/settings.component.html index 20d4f0b..3b892a5 100644 --- a/libs/mobile/shared/feature/settings/src/lib/settings/settings.component.html +++ b/libs/mobile/shared/feature/settings/src/lib/settings/settings.component.html @@ -17,9 +17,9 @@ > -

{{ auth.currentUser?.displayName }}

+

{{ currentUser.displayName }}

- {{ auth.currentUser?.email }} + {{ currentUser.email }} diff --git a/libs/mobile/shared/feature/settings/src/lib/settings/settings.component.ts b/libs/mobile/shared/feature/settings/src/lib/settings/settings.component.ts index f97a5fe..011c3a3 100644 --- a/libs/mobile/shared/feature/settings/src/lib/settings/settings.component.ts +++ b/libs/mobile/shared/feature/settings/src/lib/settings/settings.component.ts @@ -1,6 +1,7 @@ -import { Component } from '@angular/core'; +import { Component, inject } from '@angular/core'; import { Auth } from '@angular/fire/auth'; import { Router } from '@angular/router'; +import { User } from '@firebase/auth'; import { AuthService } from '@task-ninja/mobile/auth/data-access'; @Component({ @@ -9,11 +10,14 @@ import { AuthService } from '@task-ninja/mobile/auth/data-access'; styleUrls: ['./settings.component.scss'], }) export class SettingsComponent { - constructor( - private authService: AuthService, - private router: Router, - public auth: Auth - ) {} + private readonly authService = inject(AuthService); + private readonly router = inject(Router); + private readonly auth = inject(Auth); + + public currentUser: Partial = { + displayName: this.auth.currentUser?.displayName, + email: this.auth.currentUser?.email, + }; async signOut() { await this.authService.signOut(); diff --git a/libs/mobile/tabs/feature/src/lib/tabs.page.ts b/libs/mobile/tabs/feature/src/lib/tabs.page.ts index 8cda8dc..381b50b 100644 --- a/libs/mobile/tabs/feature/src/lib/tabs.page.ts +++ b/libs/mobile/tabs/feature/src/lib/tabs.page.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, inject } from '@angular/core'; import { ActionSheetController, IonRouterOutlet, @@ -12,11 +12,9 @@ import { AddTaskComponent } from '@task-ninja/mobile/tasks/feature/add-task'; styleUrls: ['tabs.page.scss'], }) export class TabsPageComponent { - constructor( - private actionSheetController: ActionSheetController, - private modalController: ModalController, - private routerOutlet: IonRouterOutlet - ) {} + private readonly actionSheetController = inject(ActionSheetController); + private readonly modalController = inject(ModalController); + private readonly routerOutlet = inject(IonRouterOutlet); async selectAction() { const actionSheet = await this.actionSheetController.create({ diff --git a/libs/mobile/tasks/data-access/src/lib/services/task.service.ts b/libs/mobile/tasks/data-access/src/lib/services/task.service.ts index f7e1dc4..641964c 100644 --- a/libs/mobile/tasks/data-access/src/lib/services/task.service.ts +++ b/libs/mobile/tasks/data-access/src/lib/services/task.service.ts @@ -1,4 +1,4 @@ -import { Injectable } from '@angular/core'; +import { Injectable, inject } from '@angular/core'; import { Auth } from '@angular/fire/auth'; import { FieldValue, @@ -38,7 +38,8 @@ export interface Category { providedIn: 'root', }) export class TaskService { - constructor(private firestore: Firestore, private auth: Auth) {} + private readonly firestore = inject(Firestore); + private readonly auth = inject(Auth); getTasks(): Observable { const tasksRef = collection(this.firestore, 'tasks'); diff --git a/libs/mobile/tasks/feature/add-task/src/lib/add-task/add-task.component.ts b/libs/mobile/tasks/feature/add-task/src/lib/add-task/add-task.component.ts index e94f7e5..cd1f850 100644 --- a/libs/mobile/tasks/feature/add-task/src/lib/add-task/add-task.component.ts +++ b/libs/mobile/tasks/feature/add-task/src/lib/add-task/add-task.component.ts @@ -1,4 +1,4 @@ -import { Component, Input, OnInit } from '@angular/core'; +import { Component, Input, OnInit, inject } from '@angular/core'; import { AbstractControl, FormBuilder, @@ -18,6 +18,12 @@ import { styleUrls: ['./add-task.component.scss'], }) export class AddTaskComponent implements OnInit { + private readonly modalController = inject(ModalController); + private readonly loadingController = inject(LoadingController); + private readonly formBuilder = inject(FormBuilder); + private readonly taskService = inject(TaskService); + private readonly toastService = inject(ToastService); + @Input() type: string; @Input() taskId: string; @Input() selectedTask: Task; @@ -57,14 +63,6 @@ export class AddTaskComponent implements OnInit { }, ]; - constructor( - private modalController: ModalController, - private loadingController: LoadingController, - private formBuilder: FormBuilder, - private taskService: TaskService, - private toastService: ToastService - ) {} - ngOnInit(): void { if (this.type === 'edit-task') { this.addTaskForm.patchValue({ diff --git a/libs/mobile/tasks/feature/task-detail/src/lib/task-detail/task-detail.component.ts b/libs/mobile/tasks/feature/task-detail/src/lib/task-detail/task-detail.component.ts index bf5a0e7..4919e99 100644 --- a/libs/mobile/tasks/feature/task-detail/src/lib/task-detail/task-detail.component.ts +++ b/libs/mobile/tasks/feature/task-detail/src/lib/task-detail/task-detail.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, inject } from '@angular/core'; import { Auth } from '@angular/fire/auth'; import { ActivatedRoute, Router } from '@angular/router'; import { @@ -17,20 +17,18 @@ import { Observable } from 'rxjs'; styleUrls: ['./task-detail.component.scss'], }) export class TaskDetailComponent implements OnInit { + private readonly route = inject(ActivatedRoute); + private readonly router = inject(Router); + private readonly taskService = inject(TaskService); + private readonly loadingController = inject(LoadingController); + private readonly toastService = inject(ToastService); + private readonly auth = inject(Auth); + private readonly modalController = inject(ModalController); + private readonly routerOutlet = inject(IonRouterOutlet); + selectedTask$: Observable; selectedTaskId: string; - constructor( - private route: ActivatedRoute, - private router: Router, - private taskService: TaskService, - private loadingController: LoadingController, - private toastService: ToastService, - private auth: Auth, - private modalController: ModalController, - private routerOutlet: IonRouterOutlet - ) {} - ngOnInit(): void { this.selectedTaskId = this.route.snapshot.paramMap.get('id') as string; this.selectedTask$ = this.taskService.getTaskById(this.selectedTaskId); diff --git a/libs/mobile/tasks/feature/tasks/src/lib/tasks.page.ts b/libs/mobile/tasks/feature/tasks/src/lib/tasks.page.ts index bf9fdf9..f17862b 100644 --- a/libs/mobile/tasks/feature/tasks/src/lib/tasks.page.ts +++ b/libs/mobile/tasks/feature/tasks/src/lib/tasks.page.ts @@ -1,4 +1,4 @@ -import { Component, OnDestroy, OnInit } from '@angular/core'; +import { Component, OnDestroy, OnInit, inject } from '@angular/core'; import { IonRouterOutlet, ModalController } from '@ionic/angular'; import { FiltersComponent } from '@task-ninja/mobile/shared/feature/filters'; import { Task, TaskService } from '@task-ninja/mobile/tasks/data-access'; @@ -10,16 +10,14 @@ import { Subject, takeUntil } from 'rxjs'; styleUrls: ['tasks.page.scss'], }) export class TasksPageComponent implements OnInit, OnDestroy { + private readonly taskService = inject(TaskService); + private readonly modalController = inject(ModalController); + private readonly routerOutlet = inject(IonRouterOutlet); + contentLoaded = false; tasks: Task[] = []; private isDestroyed$: Subject = new Subject(); - constructor( - private taskService: TaskService, - private modalController: ModalController, - private routerOutlet: IonRouterOutlet - ) {} - ngOnInit(): void { this.taskService .getTasks()