Initial commit
Generated by create-expo-app 3.2.0.
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
import FilmItem from "@/components/FilmItem";
|
||||
import ListEmptyComponent from "@/components/ListEmptyComponent";
|
||||
import { COLORS } from "@/constants/colors";
|
||||
import { Film } from "@/types/film";
|
||||
import React, { useEffect } from "react";
|
||||
import { FlatList, RefreshControl, StyleSheet, View } from "react-native";
|
||||
|
||||
const Page = () => {
|
||||
const [films, setFilms] = React.useState<Film[]>([]);
|
||||
const [refreshing, setRefreshing] = React.useState(false);
|
||||
const [loading, setLoading] = React.useState(false);
|
||||
|
||||
const fetchFilms = async () => {
|
||||
try {
|
||||
setLoading(true);
|
||||
const response = await fetch("https://swapi.dev/api/films/");
|
||||
const data = await response.json();
|
||||
setFilms(data.results);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
} finally {
|
||||
setLoading(false);
|
||||
setRefreshing(false);
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
fetchFilms();
|
||||
}, []);
|
||||
|
||||
const onRefresh = () => {
|
||||
setRefreshing(true);
|
||||
fetchFilms();
|
||||
};
|
||||
|
||||
return (
|
||||
<View style={styles.container}>
|
||||
<FlatList
|
||||
data={films}
|
||||
keyExtractor={(item) => item.episode_id.toString()}
|
||||
renderItem={({ item }) => <FilmItem item={item} />}
|
||||
refreshControl={
|
||||
<RefreshControl
|
||||
refreshing={refreshing}
|
||||
onRefresh={onRefresh}
|
||||
tintColor={COLORS.text}
|
||||
/>
|
||||
}
|
||||
ListEmptyComponent={
|
||||
<ListEmptyComponent loading={loading} message="No films found" />
|
||||
}
|
||||
/>
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
export default Page;
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
container: {
|
||||
flex: 1,
|
||||
backgroundColor: COLORS.containerBackground,
|
||||
},
|
||||
item: {
|
||||
padding: 16,
|
||||
borderBottomWidth: 1,
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user