import React from "react"; import { useState } from "react"; import { fetchWeather } from "../utils/apiFunc"; import Cookies from "js-cookie"; import { toast } from "react-toastify"; import WeatherData from "./WeatherData"; import { useEffect } from "react"; const WeatherCard: React.FC = () => { const [city, setCity] = useState(""); const [loading, setLoading] = useState(false); const [weatherData, setWeatherData] = useState(false); const getAPIKey = () => Cookies.get("apiKey") || ""; const getUnit = () => localStorage.getItem("unit") || "metric"; const handleCityChange = (event: React.ChangeEvent) => { setCity(event.target.value); }; const handleSubmit = async (event: React.FormEvent) => { event.preventDefault(); setLoading(true); toast .promise(fetchWeather(city, getAPIKey(), getUnit()), { pending: "Fetching weather data...", success: "Weather data loaded successfully!", error: "Failed to load weather data. Please check your entered city name. (Error: x4040)", }) .then(() => { if (localStorage.getItem("weather")) { setWeatherData(true); } else { setWeatherData(false); } setLoading(false); }); }; // Check if weather data is already in localStorage - when entering the page via URL/reload useEffect(() => { if (localStorage.getItem("weather")) { setWeatherData(true); } else { setWeatherData(false); } }, []); return (

Weather

Current weather will be displayed here.

{weatherData && ( )}
{weatherData && }
); }; export default WeatherCard;