Skip to main content

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);