36 lines
1.4 KiB
TypeScript
36 lines
1.4 KiB
TypeScript
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;
|
||
} |