package com.red.circle.live.app.dto.cmd;

import java.util.Arrays;
import java.util.Objects;

/**
 * 心跳状态. 历史版本： com.red.circle.other.inner.enums.user.UserOnlineStatusEnum
 *
 * @author pengliang on 2020/5/28
 */
public enum HeartbeatStatusEnum {

  /**
   * 语音直播（历史版本key: LANGUAGE_HALL）.
   */
  VOICE_LIVE("LANGUAGE_HALL"),

  /**
   * 在线(历史版本key: IDLE).
   */
  ONLINE("IDLE");

  /**
   * 兼容历史版本key.
   */
  private final String historyKey;

  HeartbeatStatusEnum(String historyKey) {
    this.historyKey = historyKey;
  }

  public String getHistoryKey() {
    return historyKey;
  }

  public static HeartbeatStatusEnum toEnum(String key) {
    try {
      return HeartbeatStatusEnum.valueOf(key);
    } catch (Exception ex) {
      // ignore
    }
    return null;
  }

  public static HeartbeatStatusEnum toEnumHistory(String key) {
    return Arrays.stream(HeartbeatStatusEnum.values())
        .filter(val -> Objects.equals(val.getHistoryKey(), key))
        .findFirst()
        .orElse(toEnum(key));
  }

}
