package org.thoughtcrime.securesms.util;

import android.view.View;

import androidx.annotation.NonNull;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.LifecycleRegistry;
import androidx.recyclerview.widget.RecyclerView;

public abstract class LifecycleViewHolder extends RecyclerView.ViewHolder implements LifecycleOwner {

  private final LifecycleRegistry lifecycleRegistry;

  public LifecycleViewHolder(@NonNull View itemView) {
    super(itemView);

    lifecycleRegistry = new LifecycleRegistry(this);
  }

  void onAttachedToWindow() {
    lifecycleRegistry.setCurrentState(Lifecycle.State.RESUMED);
  }

  void onDetachedFromWindow() {
    lifecycleRegistry.setCurrentState(Lifecycle.State.DESTROYED);
  }

  @Override
  public @NonNull Lifecycle getLifecycle() {
    return lifecycleRegistry;
  }
}