export class Lifecycle {
  private store;

  constructor(store) {
    this.store = store;
    this.componentDidAppear = this.componentDidAppear.bind(this);
    this.componentDidDisappear = this.componentDidDisappear.bind(this);
    this.onNavigationButtonPressed = this.onNavigationButtonPressed.bind(this);
  }

  private componentDidAppear(id) {
    const ref = this.store.getRefForComponentId(id);
    if (ref && ref.didAppear) {
      ref.didAppear();
    }
  }

  private componentDidDisappear(id) {
    const ref = this.store.getRefForComponentId(id);
    if (ref && ref.didDisappear) {
      ref.didDisappear();
    }
  }

  private onNavigationButtonPressed(params) {
    const ref = this.store.getRefForComponentId(params.componentId);
    if (ref && ref.onNavigationButtonPressed) {
      ref.onNavigationButtonPressed(params.buttonId);
    }
  }
}
