-
-
Notifications
You must be signed in to change notification settings - Fork 118
/
ErrorScreen.tsx
81 lines (72 loc) · 2.52 KB
/
ErrorScreen.tsx
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
73
74
75
76
77
78
79
80
81
// Sh**t! I Smoke
// Copyright (C) 2018-2019 Marcelo S. Coelho, Amaury Martiny
// Sh**t! I Smoke is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Sh**t! I Smoke is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Sh**t! I Smoke. If not, see <http:https://www.gnu.org/licenses/>.
import React, { useContext } from 'react';
import { Image, StyleSheet, Text, View } from 'react-native';
import { NavigationInjectedProps } from 'react-navigation';
import { scale } from 'react-native-size-matters';
import errorPicture from '../../../assets/images/error.png';
import { Button } from '../../components';
import { i18n } from '../../localization';
import { ErrorContext } from '../../stores';
import * as theme from '../../util/theme';
interface ErrorScreenProps extends NavigationInjectedProps {}
export function ErrorScreen (props: ErrorScreenProps) {
const { error } = useContext(ErrorContext);
return (
<View style={styles.container}>
<Image source={errorPicture} />
<View>
<Text style={styles.errorText}>
<Text style={styles.sorry}>
{i18n.t('error_screen_common_sorry')}
</Text>
{i18n.t('error_screen_error_cannot_load_cigarettes')}
</Text>
</View>
<Button
onPress={() => props.navigation.navigate('Search')}
style={styles.chooseOther}
type="primary"
>
{i18n.t('error_screen_choose_other_location').toUpperCase()}
</Button>
<Text style={theme.text}>{i18n.t('error_screen_error_description')}</Text>
<Text style={styles.errorMessage}>
{i18n.t('error_screen_error_message', { errorText: error })}
</Text>
</View>
);
}
const styles = StyleSheet.create({
chooseOther: {
marginVertical: theme.spacing.normal
},
container: {
...theme.fullScreen,
...theme.withPadding,
flexGrow: 1,
flexDirection: 'column'
},
errorMessage: {
...theme.text,
fontSize: scale(10),
marginTop: theme.spacing.small
},
errorText: {
...theme.shitText,
marginTop: theme.spacing.big
},
sorry: {
color: theme.primaryColor
}
});