import { getCachedUserInfo } from '../../cache/cache';
import { useAsync } from '../../hooks/useAsync';
import type { UserLoginInfo } from '../../model/user';
import { useAppSelector } from './useAppSelector';

/**
 * 获取当前用户基本信息
 */
export function useUserInfo(): UserLoginInfo | null {
  return useAppSelector((state) => state.user.info);
}

/**
 * 用户基本Id
 */
export function useUserId(): string | undefined {
  return useUserInfo()?._id;
}

/**
 * 根据用户id获取用户信息列表
 */
export function useUserInfoList(userIds: string[]) {
  const { value: userInfos = [] } = useAsync(() => {
    return Promise.all(userIds.map((userId) => getCachedUserInfo(userId)));
  }, [userIds.join(',')]);

  return userInfos;
}