import React, { useState, useEffect } from "react";
import {
  StyleSheet,
  View,
  StatusBar,
  TextInput,
  Text,
  Switch,
} from "react-native";
import themeColors from '../components/themeColors';
import ImageHeader from "../components/ImageHeader";
import { connect } from 'react-redux';
import { TouchableOpacity } from "react-native-gesture-handler";
import request from '../utility/PromiseRequest';
import { i18n } from '../utility/i18n';
// ---------------------------------------------------------------------------------------------
function SettingsTextInput(props) {
  return (
    
      {props.label}
      
    
  );
}
function SettingsSwitch(props) {
  const [isEnabled, setIsEnabled] = useState(false);
  const toggleSwitch = () => setIsEnabled(previousState => !previousState);
  return (
    
      {props.label}
      
    
  )
}
function SettingsButton(props) {
  return (
    
      {props.label}
      
        {props.buttonText}
      
    
  )
}
function SettingsText(props) {
  return (
    
      {props.label}
      {props.text}
    
  )
}
function SettingsSlider(props) {
  /*
    
  */
  return (
    
      {props.label}
    
  )
}
function SettingsCombo(props) {
}
function SettingsGroup(props) {
  return (
    
      {props.title}
      
        {React.Children.map(props.children, (child, idx) =>
          
            {child}
          
        )}
      
    
  );
};
const settingsGroupStyles = StyleSheet.create({
  container: {
    padding: 20,
    paddingRight: 30,
  },
  title: {
    color: "white",
    fontSize: 20,
    fontWeight: "600",
  },
  subsettings: {
    padding: 10,
    paddingLeft: 30,
  },
  row: {
    flexDirection: "row",
    justifyContent: "space-between",
    alignItems: "center",
    borderTopColor: "rgba(255, 255,255, 0.6)",
    paddingTop: 5,
    paddingBottom: 5,
    borderTopWidth: 0.5,
    minHeight: 40,
  },
  firstRow: {
    paddingTop: 0,
    borderTopWidth: 0,
  },
  label: {
    color: "white",
    fontSize: 17,
  },
  textInput: {
    color: "rgba(255,255,255,1)",
    marginTop: 8,
    textAlign: "right",
  },
  slider: {
    minWidth: 100,
    width: 150,
    //minHeight: 50,
  },
  switch: {
    //minHeight: 50,
    //minWidth: 80,
  },
  buttonText: {
    color: "rgba(255,255,255,1)",
    width: "100%",
    textAlign: "center",
  },
  text : {
    color: "rgba(255,255,255,1)",
    width: "100%",
    textAlign: "right",
  },
  buttonTouchable: {
    backgroundColor: themeColors["CARROT"],
    width: 128,
    padding: 10,
    justifyContent: "center",
    borderRadius: 4,
  }
});
// ---------------------------------------------------------------------------------------------
async function queryDeviceFirmwareVersion(swimTrackerHost) {
  const result = await request({ url: "http://" + swimTrackerHost + "/api/status", responseType: "json" });
  return result["firmware"]["version"];
}
async function queryNewestFirmwareVersion() {
  const QUERY_URL = "https://swimtracker-update.bauer.tech/VERSION";
  const result = await request({ url: QUERY_URL, responseType: "text" });
  console.log("newest firmware version, got", result);
  return result;
}
function SettingsView(props) {
  const [deviceFirmwareVersion, setDeviceFirmwareVersion] = useState("");
  const [newestFirmwareVersion, setNewestFirmwareVersion] = useState("");
  useEffect(() => {
    Promise.all([queryDeviceFirmwareVersion(props.settings.swimTrackerHost), queryNewestFirmwareVersion()]).then(
      (values) => {
        setDeviceFirmwareVersion(values[0]);
        setNewestFirmwareVersion(values[1]);
      }
    );
  });
  const doFirmwareUpdate = () => {
    request({ url: "http://" + props.settings.swimTrackerHost + "/api/firmwareupdate", responseType: "text"});
  };
  return (
    
      
      
        
        
          
            
            
            
            
            
            
            
            
          
        
      
    
  )
}
const mapStateToProps = (state) => {
  return { settings: state.settings };
};
export default connect(mapStateToProps)(SettingsView);