package cn.iocoder.yudao.module.im.enums.friend;
import cn.iocoder.yudao.framework.common.core.ArrayValuable;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import java.util.Arrays;
import java.util.Objects;
/**
* IM 好友关系状态(合并「是否好友」+「是否拉黑」两态)
*
* 用 state 而非 status:避免和 ImFriendDO 的 status 物理字段(CommonStatusEnum:ENABLE / DISABLE)混淆。
*
* 用于 ImFriendService.getFriendState 返回值与 FRIEND_STATE 缓存值:私聊发送热点路径下,sender 调缓存即可同时判定「能否发」和「是否屏蔽接收方」
*
* @author 芋道源码
*/
@RequiredArgsConstructor
@Getter
public enum ImFriendStateEnum implements ArrayValuable {
NONE(0, "非好友 / 已删除"),
FRIEND(1, "好友"),
BLOCKED(2, "好友且已被对方拉黑");
public static final Integer[] ARRAYS = Arrays.stream(values()).map(ImFriendStateEnum::getState).toArray(Integer[]::new);
/**
* 状态值
*/
private final Integer state;
/**
* 名字
*/
private final String name;
@Override
public Integer[] array() {
return ARRAYS;
}
public static boolean isNone(Integer state) {
return Objects.equals(NONE.state, state);
}
public static boolean isFriend(Integer state) {
return Objects.equals(FRIEND.state, state);
}
public static boolean isBlocked(Integer state) {
return Objects.equals(BLOCKED.state, state);
}
}