-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathApp.js
123 lines (111 loc) · 2.69 KB
/
App.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
import React from "react";
import { StyleSheet, Image, Text, View } from "react-native";
import { ApolloProvider } from "react-apollo";
import makeApolloClient from "./src/makeApolloClient.js";
import { LinearGradient } from "expo-linear-gradient";
import gql from "graphql-tag";
import { useQuery } from "@apollo/react-hooks";
export const FETCH_FEED = gql`
query {
podcastForFeedWithIdentifier(identifier: "p2p") {
title
cover {
url
}
}
}
`;
const AppView = () => {
const { data, error, loading } = useQuery(FETCH_FEED);
const feed = data && data.podcastForFeedWithIdentifier;
return (
<View style={styles.container}>
{feed ? (
<>
<Image
style={styles.cover}
source={{
uri: feed.cover.url.replace(".test", ".fr"),
}}
width={200}
height={200}
/>
<Text style={[styles.text, styles.title]}>{feed.title}</Text>
<Image
style={styles.background}
source={{
uri: feed.cover.url.replace(".test", ".fr"),
}}
/>
</>
) : error ? (
<Text style={styles.text}>{JSON.stringify(error)}</Text>
) : loading ? (
<Text style={styles.text}>Loading</Text>
) : (
<Text style={styles.text}>???</Text>
)}
<LinearGradient
colors={["transparent", "rgba(0,0,0,0.9)"]}
style={{
position: "absolute",
left: 0,
right: 0,
top: 0,
height: "100vh",
zIndex: -1,
}}
/>
</View>
);
};
export default function App() {
const [client, setClient] = React.useState(null);
const fetchSession = async () => {
// fetch session
const client = makeApolloClient();
setClient(client);
};
React.useEffect(() => {
fetchSession();
}, []);
return client ? (
<ApolloProvider client={client}>
<AppView />
</ApolloProvider>
) : (
<View style={styles.container}>
<Text style={styles.text}>Loading...</Text>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: "center",
justifyContent: "center",
overflow: "hidden",
backgroundColor: "black",
},
text: {
color: "#fefefe",
},
title: { fontSize: 23, fontWeight: 500, margin: 10 },
cover: {
width: 200,
height: 200,
boxShadow: "2px 2px 2px rgba(0, 0, 0, 0.50)",
},
background: {
backgroundSize: "125%",
backgroundPosition: "center",
transform: [{ scale: 1.5 }],
filter: "blur(50px)",
position: "absolute",
bottom: 0,
right: 0,
width: "100%",
height: "100%",
zIndex: -2,
},
});