import React, { useState, useEffect } from 'react';
import { View, Text, Button, ScrollView, RefreshControl, ActivityIndicator } from 'react-native';
import { useTailwind } from 'tailwind-rn'
import AsyncStorage from '@react-native-async-storage/async-storage';
import Icon from 'react-native-vector-icons/FontAwesome'
import { TouchableOpacity } from 'react-native';
import { HeaderButtons, Item } from 'react-navigation-header-buttons';
import CreateSwitButton from './components/Create';
// import date
import moment from 'moment';
import { Swit } from './Home';
function HomeScreen({ navigation }) {
const [swits, setSwits] = useState([]);
const [refreshing, setRefreshing] = useState(false);
const [isLoading, setIsLoading] = useState(false);
const [errorMessage, setErrorMessage] = useState('');
const [userId, setUserId] = useState('');
async function fetchSwits() {
setIsLoading(true)
const token = await AsyncStorage.getItem('token');
const apiUrl = await AsyncStorage.getItem('apiEndpoint')
setErrorMessage('');
try {
setErrorMessage('');
const response = await fetch(`${apiUrl}/api/v1/app/swit/swits/following`, {
headers: { 'Authorization': token },
});
if (!response.ok) {
const errorText = await response.text();
setErrorMessage(errorText);
return;
}
const swits = await response.json();
setSwits(swits);
} catch (error) {
console.log(error);
setErrorMessage('Something went wrong');
}
setIsLoading(false)
return;
}
useEffect(() => {
const unsubscribe = navigation.addListener('focus', fetchSwits);
return unsubscribe;
}, [navigation]);
useEffect(() => {
async function fetchUserId() {
const id = await AsyncStorage.getItem('userID');
setUserId(id);
}
fetchUserId();
}, []);
useEffect(() => {
navigation.setOptions({
headerRight: () => (
- {
navigation.navigate('Swit');
}}
/>
),
});
}, [navigation]);
const tailwind = useTailwind();
if (isLoading) {
return (
)
}
return (
{errorMessage ? {errorMessage} : null}
{
setRefreshing(true);
await fetchSwits();
setRefreshing(false);
}}
/>
}
>
{swits.map(swit => (
))}
);
}
export default HomeScreen;