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
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:
parent
205bf1e52c
commit
226675de03
6 changed files with 38 additions and 86 deletions
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
Reference in a new issue