import { useSignIn } from '@clerk/clerk-expo'
import { router } from 'expo-router'
import React from 'react'
import { StyleSheet, Text, TextInput, TouchableOpacity, View } from 'react-native'

export default function LoginScreen() {
    const { signIn, setActive, isLoaded } = useSignIn()
    const [username, setUsername] = React.useState('')
    const [password, setPassword] = React.useState('')

    async function handleSignIn() {
        if (!isLoaded) return

        try {
            const signInAttempt = await signIn.create({
                identifier: username,
                password
            })

            if (signInAttempt.status === 'complete') {
                await setActive({ session: signInAttempt.createdSessionId })
                router.replace('/')
            }
        } catch (e) {
            console.log(JSON.stringify(e))
        }
    }

    return (
        <View style={styles.container}>
            <Text style={styles.text}>Login</Text>
            <View style={{ width: '80%', marginTop: 20 }}>
                <Text style={styles.textlabel}>Username</Text>
                <TextInput style={styles.input} value={username} placeholder='Enter email' onChangeText={setUsername} />
                <Text style={styles.textlabel}>Password</Text>
                <TextInput
                    style={styles.input}
                    value={password}
                    placeholder='Enter password'
                    secureTextEntry
                    onChangeText={setPassword}
                />
                <TouchableOpacity
                    style={styles.button}
                    onPress={() => {
                        handleSignIn()
                    }}
                >
                    <Text style={{ color: '#fff', fontWeight: 'bold' }}>Login</Text>
                </TouchableOpacity>
                <Text style={styles.textCenter}>Don't have an account?</Text>
                <TouchableOpacity
                    style={styles.signup}
                    onPress={() => {
                        router.navigate('/sign-up')
                    }}
                >
                    <Text style={{ color: '#fff' }}>Sign Up</Text>
                </TouchableOpacity>{' '}
            </View>
        </View>
    )
}

const styles = StyleSheet.create({
    container: {
        flex: 1,
        backgroundColor: '#25292e',
        justifyContent: 'center',
        alignItems: 'center'
    },
    text: {
        color: '#fff'
    },
    textCenter: {
        color: '#ffffff',
        alignSelf: 'center',
        marginBottom: 6
    },
    textlabel: {
        color: '#fff',
        marginBottom: 3
    },
    input: {
        backgroundColor: '#fff',
        borderRadius: 5,
        padding: 10,
        marginBottom: 15
    },
    button: {
        backgroundColor: '#1e90ff',
        padding: 12,
        borderRadius: 5,
        alignItems: 'center',
        marginBottom: 15
    },
    signup: {
        alignItems: 'center'
    }
})
