Return

All tests / hooks useHeating.ts

85.71% Statements 12/14
33.33% Branches 1/3
100% Functions 2/2
84.61% Lines 11/13

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 404x     4x   4x         4x 1x 1x     1x       4x         6x             6x             6x  
import useSWR from 'swr';
import type { HeatingData } from '../types/api';
 
const url = `${process.env.NEXT_PUBLIC_DOMAIN}/api/heating`;
 
const initialValues: HeatingData = {
    outsideTemp: 0,
    zoneMeasuredTemp: 0,
};
 
const fetchHeating = async (url: string): Promise<HeatingData> => {
    const response = await fetch(url);
    Iif (!response.ok) {
        throw new Error(`Failed to fetch heating data: ${response.statusText}`);
    }
    const data = await response.json();
    return data as HeatingData;
};
 
const useHeating = (): {
    data: HeatingData;
    error: boolean;
    loading: boolean;
} => {
    const { data, error, isLoading } = useSWR<HeatingData>(url, fetchHeating, {
        keepPreviousData: true,
        fallback: initialValues,
        fallbackData: initialValues,
        dedupingInterval: 5000,
    });
 
    return {
        data: data ?? initialValues,
        error,
        loading: isLoading,
    };
};
 
export default useHeating;