11import React from 'react' ;
2- import { Image , StyleSheet , Text , FlatList } from 'react-native' ;
2+ import { Image , StyleSheet , Text , FlatList , View } from 'react-native' ;
33import { SafeAreaView } from 'react-native-safe-area-context' ;
44import { parseExperiences } from '../lib/experiences' ;
5- import { Experience } from '@ninetailed/experience.js-react' ;
5+ import { useExperience , Experience } from '@ninetailed/experience.js-react' ;
66
77const styles = StyleSheet . create ( {
8- container : {
9- flex : 1 ,
10- padding : 24 ,
11- } ,
12- blogPost : {
13- marginBottom : 28 ,
14- } ,
15- coverImage : {
16- marginBottom : 16 ,
8+ hero : {
9+ marginTop : 28 ,
1710 } ,
1811 image : {
1912 height : 100 ,
@@ -24,40 +17,43 @@ const styles = StyleSheet.create({
2417 fontSize : 20 ,
2518 marginBottom : 8 ,
2619 } ,
27- excerpt : {
28- fontSize : 16 ,
29- color : 'grey' ,
30- } ,
3120} ) ;
3221
33- function Hero ( { item } ) {
22+ function Hero ( { entry } ) {
3423 return (
35- < >
36- < Text style = { styles . title } > { item . fields . internalName } </ Text >
24+ < View style = { styles . hero } >
25+ < Text style = { styles . title } > { entry . fields . internalName } </ Text >
3726 < Image
3827 style = { styles . image }
39- source = { { uri : `https:${ item . fields . image . fields . file . url } ` } }
28+ source = { { uri : `https:${ entry . fields . image . fields . file . url } ` } }
4029 />
41- </ >
30+ </ View >
4231 ) ;
4332}
4433
45- // TODO: Change <Experience> to not use divs
34+ function HeroExperienceWrapper ( { item} ) {
35+ return < HeroExperience item = { item } /> ;
36+ }
37+
4638function HeroExperience ( { item} ) {
47- console . log ( 'item' , item ) ;
48- const parsedExperiences = parseExperiences ( item ) ;
49- console . log ( 'experiences' , parsedExperiences ) ;
50- return (
51- < Experience
52- item = { item }
53- id = { item . sys . id }
54- experiences = { parsedExperiences }
55- component = { Hero }
56- />
57- ) ;
39+ const baseline = {
40+ ...item ,
41+ id : item . sys . id ,
42+ } ;
43+ const { loading, variant} = useExperience ( {
44+ baseline,
45+ experiences : parseExperiences ( item ) ,
46+ } ) ;
47+ if ( loading ) {
48+ return < Text > Loading...</ Text > ;
49+ }
50+ if ( variant ) {
51+ return < Hero entry = { variant } /> ;
52+ }
53+ return < Hero entry = { baseline } /> ;
5854}
5955
60- export default function HeroPostList ( { entries} ) {
56+ export default function HeroList ( { entries} ) {
6157 return (
6258 < SafeAreaView >
6359 < Text >
@@ -67,7 +63,7 @@ export default function HeroPostList({entries}) {
6763 < FlatList
6864 data = { entries }
6965 keyExtractor = { item => item . sys . id }
70- renderItem = { Hero }
66+ renderItem = { HeroExperienceWrapper }
7167 />
7268 </ SafeAreaView >
7369 ) ;
0 commit comments