"use client"; import { useState, useEffect, useCallback } from "react"; export function useHA(refreshInterval = 10000) { const [data, setData] = useState(null); const [loading, setLoading] = useState(true); const refresh = useCallback(async () => { try { const res = await fetch("/api/ha", { cache: "no-store" }); const json = await res.json(); setData(json); } catch (e) { console.error("HA fetch failed", e); } finally { setLoading(false); } }, []); useEffect(() => { refresh(); const id = setInterval(refresh, refreshInterval); return () => clearInterval(id); }, [refresh, refreshInterval]); return { data, loading, refresh }; } export function useWeather() { const [weather, setWeather] = useState(null); const fetchWeather = useCallback(async () => { try { const res = await fetch("/api/weather", { cache: "no-store" }); const json = await res.json(); setWeather(json); } catch (e) { setWeather({ temp: "—", desc: "Нет данных", weatherCode: "116", forecast: [] }); } }, []); useEffect(() => { fetchWeather(); // Refresh every 10 minutes const id = setInterval(fetchWeather, 10 * 60 * 1000); return () => clearInterval(id); }, [fetchWeather]); return weather; } export function useTasks() { const [tasks, setTasks] = useState([]); const refresh = useCallback(async () => { try { const res = await fetch("/api/tasks", { cache: "no-store" }); const json = await res.json(); setTasks(json.tasks || []); } catch (e) {} }, []); useEffect(() => { refresh(); }, [refresh]); return { tasks, setTasks, refresh }; }