import React from 'react'; import { useDispatch } from '../state/Store'; import { Translate, translate } from '../i18n/i18n'; import API, { APIError } from '../API'; import { setAccessToken } from '../state/UserSlice'; import { } from 'native-base'; import SigninForm from '../components/forms/signinform'; import TextButton from '../components/TextButton'; import { useNavigation } from '../Navigation'; import { string } from 'yup'; import { FormControl, Input, Stack, Center, Button, Text, Box, useToast } from 'native-base'; import { TouchableOpacity, Linking, View, StyleSheet } from 'react-native' import TextFormField from '../components/UI/TextFormField'; import LinkBase from '../components/UI/LinkBase'; import SeparatorBase from '../components/UI/SeparatorBase'; import ButtonBase from '../components/UI/ButtonBase'; import { Image, Flex } from 'native-base'; import ImageBanner from '../assets/banner.jpg'; import TMPBase from '../components/UI/TMPBase'; import { LinearGradient } from 'expo-linear-gradient'; import SettingBase from '../components/UI/SettingsBase'; const hanldeSignin = async ( username: string, password: string, apiSetter: (accessToken: string) => void ): Promise => { try { const apiAccess = await API.authenticate({ username, password }); apiSetter(apiAccess); return translate('loggedIn'); } catch (error) { if (error instanceof APIError) return translate(error.userMessage); if (error instanceof Error) return error.message; return translate('unknownError'); } }; const SigninView = () => { const dispatch = useDispatch(); const navigation = useNavigation(); const [formData, setFormData] = React.useState({ username: { value: '', error: null as string | null, }, password: { value: '', error: null as string | null, }, }); const validationSchemas = { username: string() .min(3, translate('usernameTooShort')) .max(20, translate('usernameTooLong')) .required('Username is required'), password: string() .min(4, translate('passwordTooShort')) .max(100, translate('passwordTooLong')) .required('Password is required'), }; const toast = useToast(); const onSubmit= (username: string, password: string) => { return hanldeSignin(username, password, (accessToken) => dispatch(setAccessToken(accessToken)) ); } return (
Bienvenue ! Continuez avec Google ou entrez vos coordonnées. coucou or { let error: null | string = null; validationSchemas.username .validate(t) .catch((e) => (error = e.message)) .finally(() => { setFormData({ ...formData, username: { value: t, error } }); }); }} isRequired /> { let error: null | string = null; validationSchemas.password .validate(t) .catch((e) => (error = e.message)) .finally(() => { setFormData({ ...formData, password: { value: t, error } }); }); }} /> console.log('Link clicked!')}> {translate('forgottenPassword')} { try { const resp = await onSubmit( formData.username.value, formData.password.value ); toast.show({ description: resp, colorScheme: 'secondary' }); } catch (e) { toast.show({ description: e as string, colorScheme: 'red', avoidKeyboard: true, }); } }} /> Vous n'avez pas de compte ? navigation.navigate('Signup', {})}> Inscrivez-vous gratuitement
banner page
); }; export default SigninView;