forked from vergnet/application-amicale
81 lines
2 KiB
TypeScript
81 lines
2 KiB
TypeScript
import { useNavigation } from '@react-navigation/core';
|
|
import React from 'react';
|
|
import { Button, Card, Divider, Paragraph } from 'react-native-paper';
|
|
import Mascot, { MASCOT_STYLE } from '../../Mascot/Mascot';
|
|
import i18n from 'i18n-js';
|
|
import { StyleSheet } from 'react-native';
|
|
import CardList from '../../Lists/CardList/CardList';
|
|
import { getAmicaleServices, SERVICES_KEY } from '../../../utils/Services';
|
|
|
|
type Props = {
|
|
firstname?: string;
|
|
};
|
|
|
|
const styles = StyleSheet.create({
|
|
card: {
|
|
margin: 10,
|
|
},
|
|
editButton: {
|
|
marginLeft: 'auto',
|
|
},
|
|
mascot: {
|
|
width: 60,
|
|
},
|
|
title: {
|
|
marginLeft: 10,
|
|
},
|
|
});
|
|
|
|
function ProfileWelcomeCard(props: Props) {
|
|
const navigation = useNavigation();
|
|
return (
|
|
<Card style={styles.card}>
|
|
<Card.Title
|
|
title={i18n.t('screens.profile.welcomeTitle', {
|
|
name: props.firstname,
|
|
})}
|
|
left={() => (
|
|
<Mascot
|
|
style={styles.mascot}
|
|
emotion={MASCOT_STYLE.COOL}
|
|
animated
|
|
entryAnimation={{
|
|
animation: 'bounceIn',
|
|
duration: 1000,
|
|
}}
|
|
/>
|
|
)}
|
|
titleStyle={styles.title}
|
|
/>
|
|
<Card.Content>
|
|
<Divider />
|
|
<Paragraph>{i18n.t('screens.profile.welcomeDescription')}</Paragraph>
|
|
<CardList
|
|
dataset={getAmicaleServices(navigation.navigate, true, [
|
|
SERVICES_KEY.PROFILE,
|
|
])}
|
|
isHorizontal={true}
|
|
/>
|
|
<Paragraph>{i18n.t('screens.profile.welcomeFeedback')}</Paragraph>
|
|
<Divider />
|
|
<Card.Actions>
|
|
<Button
|
|
icon="bug"
|
|
mode="contained"
|
|
onPress={() => {
|
|
navigation.navigate('feedback');
|
|
}}
|
|
style={styles.editButton}
|
|
>
|
|
{i18n.t('screens.feedback.homeButtonTitle')}
|
|
</Button>
|
|
</Card.Actions>
|
|
</Card.Content>
|
|
</Card>
|
|
);
|
|
}
|
|
|
|
export default React.memo(
|
|
ProfileWelcomeCard,
|
|
(pp, np) => pp.firstname === np.firstname
|
|
);
|