fix: Remove constructor injection
Some checks failed
Pull Request Labeler / labeler (pull_request_target) Successful in 21s
Label PRs based on size / Check PR size (pull_request) Failing after 32s
CI / Get Changed Files (pull_request) Successful in 36s
CI / Backend Tests (pull_request) Has been skipped
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Has been skipped
CI / prettier (pull_request) Failing after 36s
CI / oxlint (pull_request) Successful in 52s
CI / eslint (pull_request) Successful in 54s
CI / test-build (pull_request) Successful in 49s
CI / Docker frontend validation (pull_request) Successful in 1m40s
CI / Playwright (pull_request) Failing after 5m0s
Claude PR Review / claude-code (pull_request) Successful in 16m6s

This commit is contained in:
Jan K9f 2025-06-10 12:59:14 +02:00
commit dd86bb6841
16 changed files with 65 additions and 62 deletions

View file

@ -1,4 +1,4 @@
import { Component, EventEmitter, Output, signal } from '@angular/core'; import { Component, EventEmitter, Output, signal, inject } from '@angular/core';
import { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms'; import { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { LoginRequest } from '../../../model/auth/LoginRequest'; import { LoginRequest } from '../../../model/auth/LoginRequest';
@ -20,11 +20,11 @@ export class LoginComponent {
@Output() closeDialog = new EventEmitter<void>(); @Output() closeDialog = new EventEmitter<void>();
@Output() forgotPassword = new EventEmitter<void>(); @Output() forgotPassword = new EventEmitter<void>();
constructor( private fb = inject(FormBuilder);
private fb: FormBuilder, private authService = inject(AuthService);
private authService: AuthService, private router = inject(Router);
private router: Router
) { constructor() {
this.loginForm = this.fb.group({ this.loginForm = this.fb.group({
usernameOrEmail: ['', [Validators.required]], usernameOrEmail: ['', [Validators.required]],
password: ['', [Validators.required]], password: ['', [Validators.required]],

View file

@ -1,4 +1,4 @@
import { Component, EventEmitter, Output, signal, OnInit } from '@angular/core'; import { Component, EventEmitter, Output, signal, OnInit, inject } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms'; import { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
import { ActivatedRoute, Router, RouterModule } from '@angular/router'; import { ActivatedRoute, Router, RouterModule } from '@angular/router';
@ -22,12 +22,12 @@ export default class RecoverPasswordComponent implements OnInit {
@Output() closeDialog = new EventEmitter<void>(); @Output() closeDialog = new EventEmitter<void>();
@Output() switchToLogin = new EventEmitter<void>(); @Output() switchToLogin = new EventEmitter<void>();
constructor( private fb = inject(FormBuilder);
private fb: FormBuilder, private authService = inject(AuthService);
private authService: AuthService, private router = inject(Router);
private router: Router, private route = inject(ActivatedRoute);
private route: ActivatedRoute
) { constructor() {
this.emailForm = this.fb.group({ this.emailForm = this.fb.group({
email: ['', [Validators.required, Validators.email]], email: ['', [Validators.required, Validators.email]],
}); });

View file

@ -1,4 +1,4 @@
import { Component, EventEmitter, Output, signal } from '@angular/core'; import { Component, EventEmitter, Output, signal, inject } from '@angular/core';
import { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms'; import { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';
import { RegisterRequest } from '../../../model/auth/RegisterRequest'; import { RegisterRequest } from '../../../model/auth/RegisterRequest';
import { AuthService } from '@service/auth.service'; import { AuthService } from '@service/auth.service';
@ -19,10 +19,10 @@ export class RegisterComponent {
@Output() switchForm = new EventEmitter<void>(); @Output() switchForm = new EventEmitter<void>();
@Output() closeDialog = new EventEmitter<void>(); @Output() closeDialog = new EventEmitter<void>();
constructor( private fb = inject(FormBuilder);
private fb: FormBuilder, private authService = inject(AuthService);
private authService: AuthService
) { constructor() {
this.registerForm = this.fb.group({ this.registerForm = this.fb.group({
email: ['', [Validators.required, Validators.email]], email: ['', [Validators.required, Validators.email]],
username: ['', [Validators.required, Validators.minLength(3)]], username: ['', [Validators.required, Validators.minLength(3)]],

View file

@ -1,4 +1,4 @@
import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core'; import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges, inject } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { Card } from '@blackjack/models/blackjack.model'; import { Card } from '@blackjack/models/blackjack.model';
import { PlayingCardComponent } from '../playing-card/playing-card.component'; import { PlayingCardComponent } from '../playing-card/playing-card.component';
@ -47,7 +47,7 @@ export class DealerHandComponent implements OnChanges {
private lastCardCount = 0; private lastCardCount = 0;
constructor(protected gameControlsService: GameControlsService) {} protected gameControlsService = inject(GameControlsService);
ngOnChanges(changes: SimpleChanges): void { ngOnChanges(changes: SimpleChanges): void {
if (changes['cards']) { if (changes['cards']) {

View file

@ -1,4 +1,4 @@
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core'; import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, inject } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { GameState } from '@blackjack/enum/gameState'; import { GameState } from '@blackjack/enum/gameState';
import { Card } from '@blackjack/models/blackjack.model'; import { Card } from '@blackjack/models/blackjack.model';
@ -69,7 +69,7 @@ export class GameControlsComponent {
protected readonly GameState = GameState; protected readonly GameState = GameState;
constructor(protected gameControlsService: GameControlsService) {} protected gameControlsService = inject(GameControlsService);
get canDoubleDown(): boolean { get canDoubleDown(): boolean {
return ( return (

View file

@ -7,6 +7,7 @@ import {
Output, Output,
signal, signal,
SimpleChanges, SimpleChanges,
inject,
} from '@angular/core'; } from '@angular/core';
import { CommonModule, CurrencyPipe } from '@angular/common'; import { CommonModule, CurrencyPipe } from '@angular/common';
import { FormGroup, ReactiveFormsModule } from '@angular/forms'; import { FormGroup, ReactiveFormsModule } from '@angular/forms';
@ -121,7 +122,9 @@ export class GameInfoComponent implements OnChanges {
betForm: FormGroup; betForm: FormGroup;
constructor(private bettingService: BettingService) { private bettingService = inject(BettingService);
constructor() {
this.betForm = this.bettingService.createBetForm(); this.betForm = this.bettingService.createBetForm();
} }

View file

@ -1,4 +1,4 @@
import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core'; import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges, inject } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { PlayingCardComponent } from '../playing-card/playing-card.component'; import { PlayingCardComponent } from '../playing-card/playing-card.component';
import { Card } from '@blackjack/models/blackjack.model'; import { Card } from '@blackjack/models/blackjack.model';
@ -49,7 +49,7 @@ export class PlayerHandComponent implements OnChanges {
private lastCardCount = 0; private lastCardCount = 0;
constructor(protected gameControlsService: GameControlsService) {} protected gameControlsService = inject(GameControlsService);
ngOnChanges(changes: SimpleChanges): void { ngOnChanges(changes: SimpleChanges): void {
if (changes['cards']) { if (changes['cards']) {

View file

@ -6,6 +6,7 @@ import {
Input, Input,
OnChanges, OnChanges,
SimpleChanges, SimpleChanges,
inject,
} from '@angular/core'; } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { gsap } from 'gsap'; import { gsap } from 'gsap';
@ -58,7 +59,7 @@ export class PlayingCardComponent implements AfterViewInit, OnChanges {
@Input({ required: true }) hidden!: boolean; @Input({ required: true }) hidden!: boolean;
@Input() isNew = false; @Input() isNew = false;
constructor(private elementRef: ElementRef) {} private elementRef = inject(ElementRef);
get isRedSuit(): boolean { get isRedSuit(): boolean {
return this.suit === 'HEARTS' || this.suit === 'DIAMONDS'; return this.suit === 'HEARTS' || this.suit === 'DIAMONDS';

View file

@ -1,11 +1,11 @@
import { Injectable } from '@angular/core'; import { Injectable, inject } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { FormBuilder, FormGroup, Validators } from '@angular/forms';
@Injectable({ @Injectable({
providedIn: 'root', providedIn: 'root',
}) })
export class BettingService { export class BettingService {
constructor(private fb: FormBuilder) {} private fb = inject(FormBuilder);
createBetForm(): FormGroup { createBetForm(): FormGroup {
return this.fb.group({ return this.fb.group({

View file

@ -1,4 +1,4 @@
import { Injectable } from '@angular/core'; import { Injectable, inject } from '@angular/core';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { DiceDto, DiceResult } from './dice.model'; import { DiceDto, DiceResult } from './dice.model';
@ -10,7 +10,7 @@ import { environment } from '@environments/environment';
export class DiceService { export class DiceService {
private apiUrl = `${environment.apiUrl}/dice`; private apiUrl = `${environment.apiUrl}/dice`;
constructor(private http: HttpClient) {} private http = inject(HttpClient);
rollDice(diceDto: DiceDto): Observable<DiceResult> { rollDice(diceDto: DiceDto): Observable<DiceResult> {
return this.http.post<DiceResult>(this.apiUrl, diceDto); return this.http.post<DiceResult>(this.apiUrl, diceDto);

View file

@ -1,4 +1,4 @@
import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core'; import { ChangeDetectionStrategy, Component, OnInit, inject } from '@angular/core';
import { NgFor } from '@angular/common'; import { NgFor } from '@angular/common';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { Game } from 'app/model/Game'; import { Game } from 'app/model/Game';
@ -14,10 +14,8 @@ import format from 'ajv/dist/vocabularies/format';
export default class HomeComponent implements OnInit { export default class HomeComponent implements OnInit {
isDepositSuccessful = false; isDepositSuccessful = false;
constructor( public route = inject(ActivatedRoute);
public route: ActivatedRoute, public router = inject(Router);
public router: Router
) {}
ngOnInit() { ngOnInit() {
this.isDepositSuccessful = this.route.snapshot.queryParams['success'] == 'true'; this.isDepositSuccessful = this.route.snapshot.queryParams['success'] == 'true';

View file

@ -1,4 +1,4 @@
import { ChangeDetectorRef, Component } from '@angular/core'; import { ChangeDetectorRef, Component, inject } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { ActivatedRoute, Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { LootboxService } from '../services/lootbox.service'; import { LootboxService } from '../services/lootbox.service';
@ -26,14 +26,14 @@ export default class LootboxOpeningComponent {
currentUser: User | null = null; currentUser: User | null = null;
private winSound: HTMLAudioElement; private winSound: HTMLAudioElement;
constructor( private route = inject(ActivatedRoute);
private route: ActivatedRoute, private router = inject(Router);
private router: Router, private lootboxService = inject(LootboxService);
private lootboxService: LootboxService, private userService = inject(UserService);
private userService: UserService, private authService = inject(AuthService);
private authService: AuthService, private cdr = inject(ChangeDetectorRef);
private cdr: ChangeDetectorRef
) { constructor() {
this.winSound = new Audio('/sounds/win.mp3'); this.winSound = new Audio('/sounds/win.mp3');
this.loadLootbox(); this.loadLootbox();
this.authService.userSubject.subscribe((user) => { this.authService.userSubject.subscribe((user) => {

View file

@ -1,4 +1,4 @@
import { ChangeDetectorRef, Component, OnInit } from '@angular/core'; import { ChangeDetectorRef, Component, OnInit, inject } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { LootboxService } from '../services/lootbox.service'; import { LootboxService } from '../services/lootbox.service';
import { LootBox } from 'app/model/LootBox'; import { LootBox } from 'app/model/LootBox';
@ -86,13 +86,11 @@ export default class LootboxSelectionComponent implements OnInit {
}, },
]; ];
constructor( private lootboxService = inject(LootboxService);
private lootboxService: LootboxService, private router = inject(Router);
private router: Router, private cdr = inject(ChangeDetectorRef);
private cdr: ChangeDetectorRef, private authService = inject(AuthService);
private authService: AuthService, private userService = inject(UserService);
private userService: UserService
) {}
ngOnInit(): void { ngOnInit(): void {
this.loadLootboxes(); this.loadLootboxes();

View file

@ -1,4 +1,4 @@
import { Injectable } from '@angular/core'; import { Injectable, inject } from '@angular/core';
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { BehaviorSubject, Observable, tap } from 'rxjs'; import { BehaviorSubject, Observable, tap } from 'rxjs';
import { Router, ActivatedRoute } from '@angular/router'; import { Router, ActivatedRoute } from '@angular/router';
@ -19,13 +19,13 @@ export class AuthService {
private userUrl = `${environment.apiUrl}/users`; private userUrl = `${environment.apiUrl}/users`;
private oauthUrl = `${environment.apiUrl}/oauth2`; private oauthUrl = `${environment.apiUrl}/oauth2`;
private http = inject(HttpClient);
private router = inject(Router);
private route = inject(ActivatedRoute);
userSubject: BehaviorSubject<User | null>; userSubject: BehaviorSubject<User | null>;
constructor( constructor() {
private http: HttpClient,
private router: Router,
private route: ActivatedRoute
) {
this.userSubject = new BehaviorSubject<User | null>(this.getUserFromStorage()); this.userSubject = new BehaviorSubject<User | null>(this.getUserFromStorage());
// Check for token in URL (OAuth callback) on initialization // Check for token in URL (OAuth callback) on initialization

View file

@ -7,6 +7,7 @@ import {
OnDestroy, OnDestroy,
Output, Output,
ViewChild, ViewChild,
inject,
} from '@angular/core'; } from '@angular/core';
import { ModalAnimationService } from '@shared/services/modal-animation.service'; import { ModalAnimationService } from '@shared/services/modal-animation.service';
import gsap from 'gsap'; import gsap from 'gsap';
@ -23,7 +24,7 @@ export class ConfirmationComponent implements AfterViewInit, OnDestroy {
@ViewChild('modalBg') modalBg!: ElementRef; @ViewChild('modalBg') modalBg!: ElementRef;
@ViewChild('modalCard') modalCard!: ElementRef; @ViewChild('modalCard') modalCard!: ElementRef;
constructor(private modalAnimationService: ModalAnimationService) {} private modalAnimationService = inject(ModalAnimationService);
ngAfterViewInit() { ngAfterViewInit() {
if (this.successful) { if (this.successful) {

View file

@ -1,4 +1,4 @@
import { Injectable, Renderer2, RendererFactory2 } from '@angular/core'; import { Injectable, Renderer2, RendererFactory2, inject } from '@angular/core';
@Injectable({ @Injectable({
providedIn: 'root', providedIn: 'root',
@ -7,8 +7,10 @@ export class SoundInitializerService {
private renderer: Renderer2; private renderer: Renderer2;
private observer: MutationObserver; private observer: MutationObserver;
constructor(rendererFactory: RendererFactory2) { private rendererFactory = inject(RendererFactory2);
this.renderer = rendererFactory.createRenderer(null, null);
constructor() {
this.renderer = this.rendererFactory.createRenderer(null, null);
this.observer = new MutationObserver((mutations) => { this.observer = new MutationObserver((mutations) => {
mutations.forEach((mutation) => { mutations.forEach((mutation) => {