# State Management

### BehaviorSubjects
The application uses RxJS BehaviorSubjects for state management:

#### ApiService State
```typescript
isUpdateCart = new BehaviorSubject(true);
deletedFromCart = new BehaviorSubject(true);
login = new BehaviorSubject(true);
```

#### SocketsService State
```typescript
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
```typescript
// Subscribe to state changes
this.apiService.isUpdateCart.subscribe(
  shouldUpdate => {
    if (shouldUpdate) {
      this.loadCart();
    }
  }
);

// Update state
this.apiService.isUpdateCart.next(true);
```