import React, {useState, useEffect} from 'react'; import RNSInfo from 'react-native-sensitive-info'; import SInfo from 'react-native-sensitive-info'; import DropDown from './DropDown'; import { StatusBar, StyleSheet, Text, useColorScheme, View, TouchableHighlight, TextInput, ScrollView, Modal, TouchableOpacity, } from 'react-native'; import {Icon} from 'react-native-elements'; const RegisterUserScreen = ({navigation}) => { const [username, setUsername] = useState(''); const [orgname, setOrgname] = useState(''); const [password, setPassword] = useState(''); const [token, setToken] = useState(''); const [message, setMessage] = useState(''); const [error, setError] = useState(''); var [isPress, setIsPress] = useState(false); const [selectedOrg, setSelectedOrg] = useState('select organization...'); const [isModalVisible, setisModalVisible] = useState(false); const changeModalVisibility = bool => setisModalVisible(bool); const setData = option => setSelectedOrg(option); const options = ['mod', 'tenant', 'owner']; useEffect(() => { setError(''); }, []); const setKey = async (key, value) => { return SInfo.setItem(key, value, { sharedPreferencesName: 'mySharedPrefs', keychainService: 'myKeychain', }); }; const getKey = async key => { return RNSInfo.getItem(key, { sharedPreferencesName: 'mySharedPrefs', keychainService: 'myKeychain', }); }; const adaptOrgName = org => { if (org === 'tenant') { setSelectedOrg('Org1'); } if (org === 'owner') { setSelectedOrg('Org2'); } if (org === 'mod') { setSelectedOrg('Org3'); } return selectedOrg; }; const register_user = async () => { console.log('register user touched'); var data = { username: username, orgName: adaptOrgName(selectedOrg), transient: JSON.stringify({ user: { username: username, email: username, password: password, phonenumber: 0, pricing: 'free', organization: adaptOrgName(selectedOrg), }, }), }; await fetch('http://192.168.29.141:4000/users/register', { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, body: JSON.stringify(data), }) .then(function (response) { //console.log("response ", response); return response.json(); }) .then(async function (response_data) { console.log('\nresponse data ', response_data); navigation.navigate('LoginUserScreen'); }) .catch(error => { setError(error); console.log('error ' + error); }); }; const register_fabric = async (username_fab, orgname_fab) => { console.log('register fabric touched'); var data = { username: username_fab, orgName: orgname_fab, }; await fetch('http://192.168.29.141:4000/users', { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, body: JSON.stringify(data), }) .then(function (response) { console.log('response ', response); //const cred = await Keychain.setGenericPassword(JSON.stringify(response)); return response.json(); }) .then(async function (response_data) { console.log('\n data ', response_data); console.log( '\n data success', response_data.success + typeof response_data.success, ); if (response_data.success) { await setKey('token', response_data.token); setToken(response_data.token); setMessage(response_data.message); } var key_token = await getKey('token'); console.log('retrived key_token ' + key_token); }) .catch(error => { setError(error); console.log('error ' + error); }); }; var touchProps = { activeOpacity: 1, underlayColor: 'white', style: isPress ? styles.btnPress : styles.btnNormal, onHideUnderlay: () => setIsPress(false), onShowUnderlay: () => setIsPress(true), onPress: register_user, }; var textInputProps = { style: styles.input, placeholderTextColor: '#4b4a4a', }; var inputHeadingProps = { style: styles.inputHeading, }; return ( <> navigation.goBack()} style={{activeOpacity: 1, underlayColor: 'red', color: 'white'}}> Register Username changeModalVisibility(true)} style={styles.touchableopacity}> {selectedOrg} changeModalVisibility(false)}> Password Submit {message ? ( {message} ) : ( {error.message} )} navigation.navigate('LoginUserScreen')}> Already a member? ); }; const styles = StyleSheet.create({ viewRoot: { backgroundColor: '#ffffff', justifyContent: 'center', height: '100%', flex: 1, }, heading: { color: '#1C254E', fontSize: 60, textAlign: 'center', fontFamily: 'Ubuntu-Bold', }, icon: { alignSelf: 'flex-start', marginLeft: '28%', flexDirection: 'row', }, btnNormal: { borderRadius: 10, height: 45, width: 140, backgroundColor: '#1C254E', alignItems: 'center', justifyContent: 'center', }, btnText: { textAlign: 'center', fontSize: 22, color: 'white', }, btnPress: { borderRadius: 10, height: 45, width: 140, backgroundColor: '#1C254E', justifyContent: 'center', }, input: { height: 60, width: 280, margin: 12, borderRadius: 15, padding: 10, color: 'black', backgroundColor: '#c4c4c4', }, inputHeading: { fontSize: 25, margin: 12, justifyContent: 'center', fontFamily: 'Ubuntu-Bold', color: '#1C254E', }, dropdownText: { margin: 20, fontSize: 20, fontWeight: 'bold', }, }); export default RegisterUserScreen;