UNPKG

react-native-chating-ui-kit

Version:

CometChat React Native UI Kit is a collection of custom UI Components designed to build text , chat and calling features in your application. The UI Kit is developed to keep developers in mind and aims to reduce development efforts significantly

96 lines 4.6 kB
import { Text, TextInput, View } from 'react-native'; import React, { useContext, useEffect, useRef, useState } from 'react'; import Header from './Header'; import { CometChatConfirmDialog, CometChatContext, localize, } from '../shared'; //@ts-ignore import { CometChat } from '@cometchat-pro/react-native-chat'; import { CometChatGroupsEvents } from '../shared/events'; import { styles } from './style'; import { CometChatUIEventHandler } from '../shared/events/CometChatUIEventHandler/CometChatUIEventHandler'; export const CometChatJoinProtectedGroup = (props) => { const { theme } = useContext(CometChatContext); const { group, title = localize("PROTECTED_GROUP"), joinIcon, closeIcon, passwordPlaceholderText = localize("GROUP_PASSWORD"), description, onJoinClick, hasError, errorText, onError, onBack, joinProtectedGroupStyle, } = props; const [password, setPassword] = useState(''); const [modalVisible, setModalVisible] = useState(false); const [errorMessage, setErrorMessage] = useState(''); const loggedUserRef = useRef(null); const showError = (message) => { if (hasError) { setModalVisible(true); setErrorMessage(errorText ?? message); } }; const joinGroup = () => { if (!password) { showError(localize('WRONG_PASSWORD')); return; } let guid = group?.['guid']; let type = group?.['type']; CometChat.joinGroup(guid, type, password) .then((response) => { setPassword(''); onBack && onBack(); group['membersCount'] = group['membersCount'] + 1; CometChatUIEventHandler.emitGroupEvent(CometChatGroupsEvents.ccGroupMemberJoined, { joinedUser: loggedUserRef.current, joinedGroup: group, }); }) .catch((error) => { onError && onError(error); }); }; useEffect(() => { CometChat.getLoggedinUser().then((loggedUser) => { loggedUserRef.current = loggedUser; }, (error) => { onError && onError(error); }); }, []); return (<View style={[ styles.container, { width: joinProtectedGroupStyle.width ?? 'auto', height: joinProtectedGroupStyle.height ?? 'auto', backgroundColor: joinProtectedGroupStyle.background ?? theme.palette.getBackgroundColor(), borderRadius: joinProtectedGroupStyle.borderRadius ?? 0, }, joinProtectedGroupStyle.border ?? {}, ]}> <CometChatConfirmDialog isOpen={modalVisible} title={localize('INCORRECT_PASSWORD')} confirmButtonText={'Ok'} cancelButtonText={''} messageText={errorMessage} onConfirm={() => setModalVisible(false)} style={{ messageTextStyle: joinProtectedGroupStyle.errorTextStyle, titleTextStyle: joinProtectedGroupStyle.errorTextStyle, }}/> <Header title={title} joinIcon={joinIcon} closeIcon={closeIcon} titleStyle={[ joinProtectedGroupStyle.titleStyle ?? theme.typography.heading, { color: theme.palette.getAccent() }, ]} joinIconTint={joinProtectedGroupStyle.joinIconTint ?? theme.palette.getPrimary()} closeIconTint={joinProtectedGroupStyle.closeIconTint ?? theme.palette.getPrimary()} onSubmit={onJoinClick ? () => onJoinClick({ group, password }) : joinGroup} onCancel={onBack}/> <Text style={[ joinProtectedGroupStyle.descriptionTextStyle ?? theme.typography.subtitle1, { color: theme.palette.getAccent() }, ]}> {description ?? `Enter password to access ${group?.['name']} Group.`} </Text> <TextInput value={password} onChangeText={setPassword} placeholder={passwordPlaceholderText} placeholderTextColor={theme.palette.getAccent600()} style={[ styles.textInput, { borderBottomColor: joinProtectedGroupStyle.inputBorderColor ?? theme.palette.getAccent200(), color: theme.palette.getAccent(), }, password.length > 0 ? joinProtectedGroupStyle.passwordPlaceholderStyle ?? theme.typography.body : joinProtectedGroupStyle.passwordInputTextStyle ?? theme.typography.body, ]}/> </View>); }; CometChatJoinProtectedGroup.defaultProps = { hasError: true, joinProtectedGroupStyle: {}, }; //# sourceMappingURL=CometChatJoinProtectedGroup.js.map