1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
import React, { useState } from 'react';
import { View, TextInput, Button, Text, StyleSheet, Alert } from 'react-native';
import emailService from '../../services/emailService';
const SignupScreen = ({ navigation }) => {
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
const handleSignup = async () => {
try {
// Trigger OTP email using custom email service
await emailService.sendOtp(email);
Alert.alert('Success', 'OTP sent to your email');
navigation.navigate('Login'); // Navigate to Login after sending OTP
} catch (error) {
console.error('Signup error:', error);
Alert.alert('Error', 'There was an error sending the OTP. Please try again.');
}
};
return (
<View style={styles.container}>
<Text style={styles.title}>Sign Up</Text>
<TextInput
style={styles.input}
placeholder="Email"
value={email}
onChangeText={setEmail}
keyboardType="email-address"
autoCapitalize="none"
/>
<TextInput
style={styles.input}
placeholder="Password"
value={password}
onChangeText={setPassword}
secureTextEntry
/>
<Button title="Sign Up" onPress={handleSignup} />
<View style={styles.buttonContainer}>
<Button title="Already have an account? Log In" onPress={() => navigation.navigate('Login')} />
</View>
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
padding: 16,
},
title: {
fontSize: 24,
fontWeight: 'bold',
marginBottom: 24,
textAlign: 'center',
},
input: {
height: 40,
borderColor: '#ccc',
borderWidth: 1,
marginBottom: 12,
paddingHorizontal: 8,
},
buttonContainer: {
marginTop: 12,
},
});
export default SignupScreen;
|