'init'
This commit is contained in:
36
app/providers/InformationProvider/useUserCache.ts
Normal file
36
app/providers/InformationProvider/useUserCache.ts
Normal file
@@ -0,0 +1,36 @@
|
||||
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;
|
||||
}
|
||||
Reference in New Issue
Block a user