All files / react-app/src/utils basic-observable.ts

100% Statements 12/12
100% Branches 0/0
100% Functions 5/5
100% Lines 11/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24  143x 143x     143x 143x     143x 15x     15x 15x 15x       143x 23x      
export class Observer<T> {
  private subscribers: Array<(observed: T) => void>;
  observed: T | null;
 
  constructor() {
    this.subscribers = [];
    this.observed = null;
  }
 
  subscribe = (subscriber: (newObserved: T | null) => void) => {
    this.subscribers.push(subscriber);
 
    // unsubscribe function
    return () => {
      const index = this.subscribers.indexOf(subscriber);
      this.subscribers.splice(index, 1);
    };
  };
 
  publish = (data: T | null) => {
    this.subscribers.forEach((subscriber) => subscriber(data));
  };
}