Rocket.Chat.ReactNative/app/lib/hooks/useUserData.ts

53 lines
1.5 KiB
TypeScript
Raw Normal View History

feat: Add caller and ringer to video conf calls (#5046) * add expo camera and use camera on call init action sheet * fix permissions * set colors when calling * update @react-native-community/hooks lib * move to useWindowDimensions * create action to handle video-conf calls * create videoConf reducer * add typed-redux-saga lib * fix return * change videoConf saga to TS * fix TS target * update action and types * create actionSheetRef * add notifyUser api * export video conf types * add action prop * use new reducer prop * add videoConferenceCancel and add allowRinging to videoConferenceStart * temp-patch * add locales * add handler to videoconf message * fix rest types * add message types * path to remove component from dom * remove notification when is videoconf * create sound hook * create dots loader * update call translation * the end is near * move to confirmed * better code reading * fix call type * fix tests * update podfile * wip * fix call order * move colors * move to jsx * fix colors * add pt-br * remove patch and point * fix colors * fix expo camera * move to style * remove unused styles * update types and style * wip * rename IncomingCallComponent * add custom notification * wip * fix naming * fix styles * fix import * fix styles * change colors * fixa ringing * fix import * organize * fix sizes * use realName * fix spacing * fix icon size * fix header gap * changeColor * fix safeArea * set calling only on direct calls * change ringer to be a component * cancel call on swipe * remove join on direct calls * add props * update package
2023-07-04 00:03:39 +00:00
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;