State Management
BehaviorSubjects
The application uses RxJS BehaviorSubjects for state management:
ApiService State
isUpdateCart = new BehaviorSubject(true);
deletedFromCart = new BehaviorSubject(true);
login = new BehaviorSubject(true);
SocketsService State
private chatOpenSubject = new BehaviorSubject<boolean>(false);
chatOpen$ = this.chatOpenSubject.asObservable();
Local Storage
Persistent data is stored in browser localStorage:
- jwt - Authentication token
- user - User information
- cart - Shopping cart data (backup)
Usage Pattern
// Subscribe to state changes
this.apiService.isUpdateCart.subscribe(
shouldUpdate => {
if (shouldUpdate) {
this.loadCart();
}
}
);
// Update state
this.apiService.isUpdateCart.next(true);