import React from 'react';
import { Stack } from 'expo-router';
import { StyleSheet, TouchableOpacity } from 'react-native';
import { router } from 'expo-router';
import DeviceInfo from 'react-native-device-info';
import { useTranslation } from 'react-i18next';
import Ionicons from '@expo/vector-icons/Ionicons';
import { ThemedText } from '@/lib/components/ThemedText';
import { ThemedView } from '@/lib/components/ThemedView';
import { useToken } from '@/lib/context/AppProvider';
import { Colors } from '@/lib/constants/Colors';
import { useColorScheme } from '@/lib/hooks/useColorScheme';
import { Message } from '@/lib/services/message';
import { Request } from '@/lib/services/request';
import { store } from '@/lib/store/store';
import { setSession } from '@/lib/store/dataStore';
import ThemedInput from '@/lib/components/ThemedInput';
export default function OnboardStartScreen() {
const colorScheme = useColorScheme() ?? 'light';
const { setToken } = useToken();
const { t } = useTranslation();
const [ name, setName ] = React.useState( '' );
const [ zipcode, setZipcode ] = React.useState( '' );
const [ houseNumber, setHouseNumber ] = React.useState( '' );
const start = () => {
if (name === '' || zipcode === '' || houseNumber === '') {
Message.error( t( "onboarding.missing-info" ) );
return;
}
// Get device name info
const deviceName = DeviceInfo.getModel();
Request
.post( 'sessions/create', {
name: name,
zipcode: zipcode,
houseNumber: houseNumber,
device: deviceName,
} )
.then( (response) => {
if (!response.success) {
Message.error( response.message );
} else {
const token = response.token;
setToken( token );
router.replace( "/(tabs)" );
store.dispatch( setSession( response.session ) );
Message.success( response.message );
}
} );
}
return (
<>
{t( "onboarding.welcome" )}
Kliko
{t( "onboarding.start" )}
>
);
}
const styles = StyleSheet.create( {
container: {
padding: 20,
flex: 1,
alignItems: 'center',
justifyContent: 'center',
},
heading: {
marginBottom: 30,
alignItems: 'center',
justifyContent: 'center',
},
inputContainer: {
width: 250,
},
button: {
borderRadius: 5,
paddingTop: 10,
paddingBottom: 10,
paddingLeft: 40,
paddingRight: 40,
marginTop: 30,
display: 'flex',
flexDirection: 'row',
alignItems: 'center',
},
buttonIcon: {
marginLeft: 15,
paddingTop: 2,
color: Colors.white
}
} );