import * as React from 'react'; import { ScrollView, TouchableOpacity, ImageBackground, View, Text, Alert } from 'react-native'; import { useState, useEffect } from 'react'; import { connect } from "react-redux"; import NetInfo from "@react-native-community/netinfo"; import CustomHeader from '../../components/header.js'; import Assets from '../../components/assets.manager.js'; import Theme from '../../components/theme.style.js'; import Icon from '../../components/icons.js'; import Elements from '../../components/elements.js'; import DB from '../../components/storage/'; import moment from 'moment'; import CustomSafeArea from '../../components/safeArea.component.js'; // import {Toast} from 'native-base'; const Banner = (props) => { return ( Track your gas consumption and mileage Add Tracker ) } const Tracker = (navigation) => { const params = navigation.route ? navigation.route.params : null const [connected, setconnected] = useState(false) const [popup, setpopup] = useState(false) const [loaded, setloaded] = useState(false) const [trackers, settrackers] = useState([]) const [Task, setTask] = useState("") const fetch = (cn, data) => { let res = [] for(var x=0;x { return new moment(a.date).format('x') - new moment(b.date).format('x') }) } const init = async () => { setconnected(true) const SESSION = await DB.session() const TRACKS = await DB.get("tracker") let tracks = TRACKS ? JSON.parse(TRACKS) : [] settrackers(fetch(SESSION.user.card_number, tracks)) setloaded(true) } useEffect(() => { NetInfo.fetch().then(state => { console.log("Connection type", state.type); console.log("Is connected?", state.isConnected); if(state.isConnected){ init() }else{ Elements.nointernet2(navigation) } }) }, []) const onReload = (task) => { init(); } const renderTrackings = () => { return trackers.map((data, index) => { let estimate = parseFloat(parseInt(data.distance) / parseInt(data.liters)).toFixed(2) return ( navigation.navigation.navigate("EditTracker", { edit: data, reload: (task) => onReload(task) })} key={index} style={{padding: 15, flexDirection: 'column', backgroundColor: navigation.app_theme?.theme.dark ? navigation.app_theme?.theme.colors.border : '#fff', borderRadius: 5, borderWidth: 0.5, marginBottom: 5, borderColor: navigation.app_theme?.theme.dark ? navigation.app_theme?.theme.colors.border : 'lightgray', elevation: 0.5}}> {data.date} km/L {estimate} {data.fueltype} {Theme.formatter.CRNCY(data.distance.split(" ")[0]).replace(".00", "") + " km"} {Theme.formatter.CRNCY(data.liters.split(" ")[0]).replace(".00", "") + " L"} ) }) } if(!connected){ return ( { NetInfo.fetch().then(state => { console.log("Connection type", state.type); console.log("Is connected?", state.isConnected); if(state.isConnected){ init() }else{ Elements.nointernet2(navigation) } }) }} /> ) } return ( {trackers.length == 0 && loaded ? navigation.navigation.navigate("AddTracker", { reload: (task) => onReload(task) })} /> : null} {trackers.length > 0 && loaded ? {renderTrackings()} navigation.navigation.navigate("AddTracker", { reload: (task) => onReload(task) })} style={{ justifyContent: 'center', alignItems: 'center', position: 'absolute', bottom: popup ? 65 : 15, right: 15, width: 60, height: 60, borderRadius: 30, backgroundColor: Theme.colors.primary, shadowColor: "#000000", elevation: 7 }} > : null } {/* */} ); } const mapStateToProps = (state) => { return { app_theme: state.appThemeReducer.theme } } export default connect(mapStateToProps, null)(Tracker)