refactor(auth): replace UserService with AuthService usage
Some checks failed
CI / Get Changed Files (pull_request) Successful in 37s
CI / Docker backend validation (pull_request) Successful in 14s
CI / Docker frontend validation (pull_request) Successful in 51s
CI / eslint (pull_request) Successful in 42s
CI / oxlint (pull_request) Successful in 32s
CI / Checkstyle Main (pull_request) Successful in 1m2s
CI / prettier (pull_request) Failing after 27s
CI / test-build (pull_request) Successful in 59s

This commit is contained in:
Jan-Marlon Leibl 2025-05-07 18:02:12 +02:00
commit 226675de03
Signed by: jleibl
GPG key ID: 300B2F906DC6F1D5
6 changed files with 38 additions and 86 deletions

View file

@ -1,51 +1,33 @@
import { inject, Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { BehaviorSubject, catchError, EMPTY, Observable, tap } from 'rxjs';
import { User } from '../model/User';
import { AuthService } from '@service/auth.service';
import { User } from '../model/User';
@Injectable({
providedIn: 'root',
})
export class UserService {
public currentUserSubject = new BehaviorSubject<User | null>(null);
public currentUser$ = this.currentUserSubject.asObservable();
private http: HttpClient = inject(HttpClient);
private authService = inject(AuthService);
constructor() {
// Initialize with the current user from AuthService if available
const currentUser = this.authService.getUser();
if (currentUser) {
this.currentUserSubject.next(currentUser);
}
// Subscribe to auth service user updates
this.authService.userSubject.subscribe((user) => {
this.currentUserSubject.next(user);
});
}
public getCurrentUser(): Observable<User | null> {
return this.http.get<User | null>('/backend/users/me').pipe(
catchError(() => EMPTY),
tap((user) => this.currentUserSubject.next(user))
);
}
public refreshCurrentUser(): void {
this.getCurrentUser().subscribe();
this.authService.loadCurrentUser();
}
/**
* Updates the user's balance locally for immediate UI feedback
* This should be called before a server-side balance change is made
* The server update will be reflected when AuthService.loadCurrentUser() is called
*/
public updateLocalBalance(amount: number): void {
const currentUser = this.currentUserSubject.getValue();
const currentUser = this.authService.currentUserValue;
if (currentUser) {
const updatedUser = {
const updatedUser: User = {
...currentUser,
balance: currentUser.balance + amount,
};
this.currentUserSubject.next(updatedUser);
this.authService.userSubject.next(updatedUser);
}
}
/**
* Refreshes the current user's data from the server
*/
public refreshCurrentUser(): void {
this.authService.loadCurrentUser();
}
}