This repository has been archived on 2025-06-18. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
casino/frontend/src/app/service/user.service.ts
Jan-Marlon Leibl 205bf1e52c
All checks were successful
CI / Get Changed Files (pull_request) Successful in 9s
CI / Docker backend validation (pull_request) Successful in 12s
CI / eslint (pull_request) Successful in 35s
CI / Docker frontend validation (pull_request) Successful in 52s
CI / oxlint (pull_request) Successful in 25s
CI / Checkstyle Main (pull_request) Successful in 55s
CI / prettier (pull_request) Successful in 21s
CI / test-build (pull_request) Successful in 31s
style: Clean up whitespace in component files
2025-05-07 17:56:12 +02:00

51 lines
1.5 KiB
TypeScript

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';
@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();
}
public updateLocalBalance(amount: number): void {
const currentUser = this.currentUserSubject.getValue();
if (currentUser) {
const updatedUser = {
...currentUser,
balance: currentUser.balance + amount,
};
this.currentUserSubject.next(updatedUser);
}
}
}