53 lines
1.5 KiB
TypeScript
53 lines
1.5 KiB
TypeScript
|
import { useEffect, useState } from 'react';
|
||
|
|
||
|
import { getSubscriptionByRoomId } from '../database/services/Subscription';
|
||
|
import { getRoomAvatar, getUidDirectMessage } from '../methods/helpers';
|
||
|
import { SubscriptionType } from '../../definitions';
|
||
|
import { Services } from '../services';
|
||
|
import { useAppSelector } from './useAppSelector';
|
||
|
|
||
|
const useUserData = (rid: string) => {
|
||
|
const [user, setUser] = useState({ username: '', avatar: '', uid: '', type: '', direct: false });
|
||
|
const { useRealName } = useAppSelector(state => ({
|
||
|
useRealName: state.settings.UI_Use_Real_Name as boolean
|
||
|
}));
|
||
|
useEffect(() => {
|
||
|
(async () => {
|
||
|
const room = await getSubscriptionByRoomId(rid);
|
||
|
if (room) {
|
||
|
const uid = (await getUidDirectMessage(room)) as string;
|
||
|
const avt = getRoomAvatar(room);
|
||
|
const username = useRealName && room.fname ? room.fname : room.name;
|
||
|
setUser({
|
||
|
uid,
|
||
|
username,
|
||
|
avatar: avt,
|
||
|
type: room?.t || '',
|
||
|
direct: room?.t === SubscriptionType.DIRECT
|
||
|
});
|
||
|
} else {
|
||
|
try {
|
||
|
const result = await Services.getUserInfo(rid);
|
||
|
if (result.success) {
|
||
|
const { user } = result;
|
||
|
const username = useRealName && user.name ? user.name : user.username;
|
||
|
setUser({
|
||
|
username,
|
||
|
avatar: user.username,
|
||
|
uid: user._id,
|
||
|
type: SubscriptionType.DIRECT,
|
||
|
direct: true
|
||
|
});
|
||
|
}
|
||
|
} catch (error) {
|
||
|
//
|
||
|
}
|
||
|
}
|
||
|
})();
|
||
|
}, []);
|
||
|
|
||
|
return user;
|
||
|
};
|
||
|
|
||
|
export default useUserData;
|