import React from 'react';
import {useState, useEffect} from 'react';
import {
ScrollView,
StyleSheet,
Text,
View,
Dimensions,
Button,
Image,
TextInput,
TouchableOpacity,
ActivityIndicator,
Animated,
SafeAreaView,
} from 'react-native';
import { connect } from 'react-redux';
import Theme from '../../../../components/theme.style.js';
import Assets from '../../../../components/assets.manager.js';
import Icon from '../../../../components/icons';
import DB from '../../../../components/storage';
import REQUEST from '../../../../components/api';
import {Divider} from 'react-native-elements';
import Geolocation from '@react-native-community/geolocation';
import SlidingUpPanel from 'rn-sliding-up-panel';
import MapView, {PROVIDER_GOOGLE, Marker} from 'react-native-maps';
import * as Animatable from 'react-native-animatable';
import BottomSheet from 'reanimated-bottom-sheet';
import NetInfo from '@react-native-community/netinfo';
const styles = {
container: {
flex: 1,
backgroundColor: '#f8f9fa',
alignItems: 'center',
justifyContent: 'center',
},
panel: {
flex: 1,
backgroundColor: 'white',
// position: 'relative',
},
panelHeader: {
height: 60,
backgroundColor: Theme.colors.lightGray,
alignItems: 'center',
justifyContent: 'center',
},
};
const {height} = Dimensions.get('window');
const renderStations = (data, onPress, onUpdateFavorite, props) => {
return data.map((station, index) => {
let stars = [1, 2, 3, 4, 5].map((star, i) => {
let name = station.stars >= star ? 'star' : 'staro';
let mgn = index > 0 ? 5 : 0;
return (
);
});
return (
onPress(station) || null}
key={index}
style={{backgroundColor: props.app_theme?.theme.colors.background}}>
{station.name}
{station.address}
{stars}
updateFavorite(station, index, onUpdateFavorite)}
style={{flex: 0, justifyContent: 'center'}}>
);
});
};
const updateFavorite = async (city, index, callback) => {
let session = await DB.session();
let urlTask = city.favorite
? 'station_delete_favorite'
: 'station_add_favorite';
let method = city.favorite ? 'delete' : 'get';
console.log(urlTask, method);
REQUEST(
urlTask,
method, { Authorization: session.token },
{
noID: true,
value: city.station_uuid,
}, {},
function (res) {
callback(index, city.favorite ? false : true);
},
function (error) {
console.log(error);
},
);
};
const renderStationPanel = (props) => {
const [panel, setpanel] = useState(null);
const [updatedFavorite, setupdatedfavorite] = useState(false);
const [updatedFavoriteIndex, setupdatedfavoriteindex] = useState(null);
const [loading, setLoading] = useState(false);
const [snap, setSnap] = useState(['10', '10', '3']);
const [initialSnap, setInitialSnap] = useState(0)
useEffect(() => {
init();
}, [props.visible]);
const init = () => {
if (props.visible == true) {
setSnap(['35', '8', '8']);
setInitialSnap(0)
} else if (props.data.length != 0) {
setSnap(['38', '8', '8']);
setInitialSnap(0)
} else {
setSnap(props.snapPoints);
setInitialSnap(2)
}
};
const getPanelTitle = () => {
if(props.error) return 'There was an error'
else if(props.loading || !props.isSearched && props.data.length == 0) return 'Getting Nearby Stations'
else if(props.isSearched) return 'Unioil Stations found: ' + (props.data.length > 0 ? props.data.length : 0)
else return 'Unioil Stations found: ' + (props.data.length > 0 ? props.data.length : 0)
}
const renderHeaders = () => {
return (
{getPanelTitle()}
{props.error ? (
Try Again
) : props.loading ? (
) : null}
);
};
const renderContents = () => {
return (
{props.data.length > 0 ? renderStations(props.data, props.onClick, props.onUpdateFavorite, props) : }
);
};
return (
1 ? snap : ['20','20','20']}
renderContent={renderContents}
enabledBottomInitialAnimation={true}
enabledInnerScrolling={true}
initialSnap={0}
renderHeader={renderHeaders}/>
);
}
const mapStateToProps = (state) => {
return {
app_theme: state.appThemeReducer.theme
}
}
export default connect(mapStateToProps, null)(renderStationPanel)
// const renderStations = (data, onPress, onUpdateFavorite) => {
// return data.map((station, index) => {
// let stars = [1, 2, 3, 4, 5].map((star, i) => {
// let name = station.stars >= star ? 'star' : 'staro';
// let mgn = index > 0 ? 5 : 0;
// return (
//
//
//
// );
// });
// return (
// onPress(station) || null}
// key={index}
// style={{backgroundColor: '#fff'}}>
//
//
//
// {station.name}
//
//
// {station.address}
//
// {stars}
//
// updateFavorite(station, index, onUpdateFavorite)}
// style={{flex: 0, justifyContent: 'center'}}>
//
//
//
//
//
// );
// });
// };
// const updateFavorite = async (city, index, callback) => {
// let session = await DB.session();
// let urlTask = city.favorite
// ? 'station_delete_favorite'
// : 'station_add_favorite';
// let method = city.favorite ? 'delete' : 'get';
// console.log(urlTask, method);
// REQUEST(
// urlTask,
// method,
// {
// Authorization: session.token,
// },
// {
// noID: true,
// value: city.station_uuid,
// },
// {},
// function (res) {
// console.log(res.message);
// callback(index, city.favorite ? false : true);
// },
// function (error) {
// console.log(error);
// },
// );
// };
// export default function renderStationPanel(props) {
// const [panel, setpanel] = useState(null);
// const [updatedFavorite, setupdatedfavorite] = useState(false);
// const [updatedFavoriteIndex, setupdatedfavoriteindex] = useState(null);
// const [loading, setLoading] = useState(false);
// const [snap, setSnap] = useState(['10', '10', '3']);
// const [initialSnap, setInitialSnap] = useState(0)
// // useEffect(() => {
// // // console.log("Error has", props.error)
// // if (props.visible) {
// // panel.show();
// // }
// // return setpanel(null);
// // }, [props.visible]);
// const init = () => {
// if (props.visible == true) {
// setSnap(['38', '8', '8']);
// setInitialSnap(0)
// } else if (props.data.length != 0) {
// // setSnap([450, 300, 60]);
// // setSnap(['450', '300', '60']);
// setSnap(['38', '8', '8']);
// setInitialSnap(0)
// } else {
// // setSnap([60, 60, 60]);
// // setSnap(['60', '60', '60']);
// setSnap(props.snapPoints);
// setInitialSnap(2)
// }
// };
// useEffect(() => {
// init();
// }, [props.visible]);
// const getPanelTitle = () => {
// if(props.error) return 'There was an error'
// else if(props.loading || !props.isSearched && props.data.length == 0) return 'Getting Nearby Stations'
// else if(props.isSearched) return 'Unioil Stations found: ' + props.data.length
// else return 'Unioil Stations found: ' + props.data.length
// }
// const renderHeaders = () => {
// return (
//
//
//
//
// {/* {props.error
// ? 'There was an error'
// : props.loading || props.data.length == 0
// ? 'Getting Nearby Stations'
// : 'Unioil Stations found: ' + props.data.length} */}
// {getPanelTitle()}
//
//
// {props.error ? (
//
// Try Again
//
// ) : props.loading ? (
//
// ) : null}
//
//
//
// {/*
// {renderStations(props.data, props.onClick, props.onUpdateFavorite)}
//
// */}
//
// );
// };
// const renderContents = () => {
// return (
//
// {props.data.length == 0 ? : renderStations(props.data, props.onClick, props.onUpdateFavorite)}
//
// );
// };
// return (
//
//
//
// );
// }