-
Notifications
You must be signed in to change notification settings - Fork 79
/
CatsScreen.js
124 lines (118 loc) · 3.41 KB
/
CatsScreen.js
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
import React, { Fragment } from "react";
import {
StyleSheet,
SafeAreaView,
ScrollView,
View,
Text,
TouchableOpacity
} from "react-native";
import Purchases from "react-native-purchases";
const styles = StyleSheet.create({
container: {
flex: 1,
flexDirection: "column",
alignItems: "stretch",
backgroundColor: "#F5FCFF"
},
buttons: {
flex: 2,
justifyContent: "flex-start"
},
textButton: {
color: "#f2545b"
},
currentStatus: {
color: "#30b296",
fontSize: 15
}
});
export default class CatsScreen extends React.Component {
constructor() {
super();
this.state = {
isPro: false,
purchaseDate: "",
expirationDate: ""
};
}
async componentDidMount() {
try {
const info = await Purchases.getPurchaserInfo();
this.handleInfo(info);
} catch (e) {
// eslint-disable-next-line no-console
console.log("Error handling");
}
}
handleInfo(info) {
const isPro = typeof info.entitlements.active.pro_cat !== "undefined";
this.setState({
isPro,
purchaseDate: isPro
? `Purchase Date: ${info.entitlements.active.pro_cat.latestPurchaseDate}`
: "",
expirationDate: isPro
? `Expiration Date: ${info.entitlements.active.pro_cat.expirationDate}`
: ""
});
}
render() {
return (
<SafeAreaView style={{ flex: 1, backgroundColor: "#fff" }}>
<ScrollView style={{ flex: 1 }}>
<View style={styles.buttons}>
<View style={{ margin: 50, alignItems: "center" }}>
<Text style={{ fontSize: 70 }}>
{this.state.isPro ? "😻" : "😿"}
</Text>
</View>
{!this.state.isPro ? (
<Fragment>
<View style={{ margin: 10, alignItems: "center" }}>
<TouchableOpacity
onPress={async () => {
try {
const info = await Purchases.restoreTransactions();
this.handleInfo(info);
} catch (e) {
// eslint-disable-next-line no-console
console.log(JSON.stringify(e));
}
}}
>
<Text style={styles.restorePurchases}>
Restore purchases
</Text>
</TouchableOpacity>
</View>
<View style={{ margin: 10, alignItems: "center" }}>
<TouchableOpacity
onPress={() => {
this.props.navigation.navigate("Upsell");
}}
>
<Text style={styles.restorePurchases}>Go Premium</Text>
</TouchableOpacity>
</View>
</Fragment>
) : (
<Fragment>
<View style={{ margin: 10, alignItems: "center" }}>
<Text style={styles.textButton}>
{this.state.purchaseDate}
</Text>
</View>
<View style={{ margin: 10, alignItems: "center" }}>
<Text style={styles.textButton}>
{this.state.expirationDate}
</Text>
</View>
</Fragment>
)}
</View>
</ScrollView>
</SafeAreaView>
);
}
}