import React, { useState, useRef, useEffect } from "react"; import { View, Text, Image, StyleSheet, TouchableOpacity, Animated, BackHandler, FlatList, ScrollView, TextInput, } from "react-native"; import axios from "axios"; import AsyncStorage from "@react-native-async-storage/async-storage"; import Container from "../components/Container"; import CardRecord from "../components/CardRecord"; const ScreenSuhu = ({ navigation }) => { const [token, setToken] = useState(null); const [profileId, setProfileId] = useState(null); const [profileName, setProfileName] = useState(null); const [profileSex, setProfileSex] = useState(null); const [profileDob, setProfileDob] = useState(null); const [profileAge, setProfileAge] = useState(null); const [temp, setTemp] = useState(0); //kg const [unit, setUnit] = useState("C"); // Celsius / Fahrenheit const [recordList, setRecordList] = useState([]); const getToken = async () => { const savedToken = await AsyncStorage.getItem("auth_token"); if (savedToken !== null) { setToken(savedToken); } else { // navigation.navigate("Profile"); } }; const HttpRequest = (url, body, conf, handle) => { // string, object, object axios .post(url, body, conf) .then((response) => { handle(response.data); }) .catch((error) => { console.error("Terjadi kesalahan:", error.stack); }); }; const handleProfileDetail = (data) => { if (data.status === "success") { setProfileId(data.data.id); setProfileName(data.data.name); setProfileSex(data.data.sex); setProfileDob(data.data.dob); if (data.data.dob !== null) { const tanggalLahir = new Date(data.data.dob); const today = new Date(); const umur = today.getFullYear() - tanggalLahir.getFullYear(); const bulanSekarang = today.getMonth() - tanggalLahir.getMonth(); let umurTerupdate; if ( bulanSekarang < 0 || (bulanSekarang === 0 && today.getDate() < tanggalLahir.getDate()) ) { umurTerupdate = umur - 1; } else { umurTerupdate = umur; } setProfileAge(umurTerupdate); } } }; const fetchProfileDetail = async () => { try { const url = "https://uas.ditaajipratama.net/api/checkcare/profile/detail"; const body = {}; const auth_token = await AsyncStorage.getItem("auth_token"); const config = { headers: { Authorization: `Bearer ${auth_token}`, }, }; console.log(`Bearer ${auth_token}`); console.log(token); if (auth_token !== null) { HttpRequest(url, body, config, handleProfileDetail); } } catch (error) { console.log(error.stack); } }; const quickResult = (unit, temp) => { var title = "Cek Suhu"; var message = "Masukkan suhu tubuh Anda"; var image = require("../img/thermometer.png"); if (unit === "C") { if (temp < 35) { title = "Hypothermia"; message = "Suhu tubuh Anda terlalu rendah"; } else if (temp >= 35 && temp <= 37.2) { title = "Normal temperature"; message = "Suhu tubuh Anda normal"; } else if (temp > 37.2) { title = "Fever"; message = "Suhu tubuh Anda tinggi"; } } else if (unit === "F") { if (temp < 95) { title = "Hypothermia"; message = "Suhu tubuh Anda terlalu rendah"; } else if (temp >= 95 && temp <= 99) { title = "Normal temperature"; message = "Suhu tubuh Anda normal"; } else if (temp > 99) { title = "Fever"; message = "Suhu tubuh Anda tinggi"; } } else { title = "Cek Suhu"; message = "Invalid unit. Use 'celsius' or 'fahrenheit'"; image = require("../img/thermometer.png"); } return { title, message, image }; }; const reqRecordList = async () => { try { const url = "https://uas.ditaajipratama.net/api/checkcare/temp/list"; const body = {}; const auth_token = await AsyncStorage.getItem("auth_token"); const config = { headers: { Authorization: `Bearer ${auth_token}`, }, }; const handle = (data) => { setRecordList(data); }; if (auth_token !== null) { HttpRequest(url, body, config, handle); } } catch (error) { console.log(error.stack); } }; const reqAdd = async () => { try { const url = "https://uas.ditaajipratama.net/api/checkcare/temp/add"; const body = { temperature: temp, unit, }; const auth_token = await AsyncStorage.getItem("auth_token"); const config = { headers: { Authorization: `Bearer ${auth_token}`, }, }; const handle = (data) => { reqRecordList(); setWeight(0); setHeight(0); }; if (auth_token !== null) { HttpRequest(url, body, config, handle); } } catch (error) { console.log(error.stack); } }; const ListItem = ({ item }) => ( {item.when} Temp: {item.temperature} °{item.unit} {quickResult(item.unit, item.temperature).title} ); useEffect(() => { getToken(); fetchProfileDetail(); reqRecordList(); }, []); return ( {quickResult(unit, temp).title} {`Suhu: ${temp}° ${unit}`} {quickResult(unit, temp).message} setTemp(text)} value={temp} /> setUnit(text)} value={unit} /> Submit } keyExtractor={(item, index) => index.toString()} /> ); }; const styles = StyleSheet.create({ headerRow: { flexDirection: "row", alignItems: "center", }, illustration: { width: 100, height: 100, }, illustrationContainer: { marginRight: 16, }, textContainer: { flex: 1, }, title: { fontSize: 28, fontWeight: "bold", color: "#111", }, datetime: { fontSize: 12, color: "#444", marginVertical: 4, }, description: { fontSize: 14, color: "#333", maxWidth: 320, marginBottom: 16, }, inputRow: { flexDirection: "row", justifyContent: "space-between", width: "100%", marginBottom: 10, }, inputForm: { flex: 1, borderWidth: 1, borderColor: "#ccc", borderRadius: 30, paddingVertical: 10, paddingHorizontal: 16, marginHorizontal: 6, backgroundColor: "#fff", color: "#333", }, inputButton: { flex: 1, borderWidth: 1, borderColor: "#ccc", borderRadius: 30, paddingVertical: 12, marginHorizontal: 6, backgroundColor: "#f9f9f9", }, inputButtonSubmit: { flex: 1, borderRadius: 30, paddingVertical: 12, marginHorizontal: 6, backgroundColor: "#007bff", }, inputText: { textAlign: "center", color: "#333", fontWeight: "500", }, submitText: { textAlign: "center", color: "#fff", fontWeight: "600", }, resultDate: { flex: 1, color: "#333", }, resultValue: { flex: 1, textAlign: "center", color: "#111", fontWeight: "500", }, resultStatus: { flex: 1, textAlign: "right", fontWeight: "bold", }, }); export default ScreenSuhu;