You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailchat/client/shared/redux/hooks/useFriendNickname.ts

34 lines
827 B
TypeScript

import { useMemo } from 'react';
import { buildFriendNicknameMap } from '../../helper/converse-helper';
import { isValidStr } from '../../utils/string-helper';
import { useAppSelector } from './useAppSelector';
/**
* 获取好友自定义的昵称
* 用于覆盖原始昵称
*
* @param userId 用户id
*/
export function useFriendNickname(userId: string): string | null {
const nickname = useAppSelector(
(state) => state.user.friends.find((f) => f.id === userId)?.nickname
);
if (isValidStr(nickname)) {
return nickname;
}
return null;
}
export function useFriendNicknameMap(): Record<string, string> {
const friends = useAppSelector((state) => state.user.friends);
const friendNicknameMap = useMemo(
() => buildFriendNicknameMap(friends),
[friends]
);
return friendNicknameMap;
}