import { useDatabase } from "@/app/providers/DatabaseProvider/useDatabase";
import { useEffect, useState } from "react";
import { UserInformation } from "./InformationProvider";
import { OnlineState } from "@/app/providers/ProtocolProvider/protocol/packets/packet.onlinestate";

/**
 * Информация запрашивается только из кэша, и в отличии от вызова
 * хука useUserInformation не использует подгрузку с сервера,
 * то есть если в кэше информации нет то вернет пустое значение
 * @param publicKey публичный ключ
 */
export function useUserCache(publicKey : string) {
    const {getQuery} = useDatabase();
    const [userInfo, setUserInfo] = 
        useState<UserInformation|undefined>(undefined);

    useEffect(() => {
        loadFromCacheDatabase();
    }, [publicKey]);

    const loadFromCacheDatabase = async () => {
        const result = await getQuery("SELECT * FROM `cached_users` WHERE `public_key` = ?", [publicKey]);
        if(!result){
            return;
        }
        setUserInfo({
            publicKey: result.public_key,
            verified: result.verified,
            title: result.title,
            username: result.username,
            online: OnlineState.OFFLINE
        });
    }

    return userInfo;
}