优化
This commit is contained in:
30
client/shared/cache/useCache.ts
vendored
Normal file
30
client/shared/cache/useCache.ts
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
import { useQuery, useQueryClient } from '@tanstack/react-query';
|
||||
import { getUserOnlineStatus } from '../model/user';
|
||||
|
||||
export { useQuery, useQueryClient };
|
||||
|
||||
/**
|
||||
* 用户登录状态
|
||||
*/
|
||||
export function useCachedOnlineStatus(
|
||||
ids: string[],
|
||||
onOnlineStatusUpdate?: (onlineStatus: boolean[]) => void
|
||||
): boolean[] {
|
||||
const staleTime = 20 * 1000; // 缓存20s
|
||||
|
||||
const { data, isSuccess } = useQuery(
|
||||
['onlineStatus', ids.join(',')],
|
||||
() => getUserOnlineStatus(ids),
|
||||
{
|
||||
staleTime,
|
||||
}
|
||||
);
|
||||
|
||||
if (isSuccess && Array.isArray(data)) {
|
||||
if (typeof onOnlineStatusUpdate === 'function' && data) {
|
||||
onOnlineStatusUpdate(data);
|
||||
}
|
||||
}
|
||||
|
||||
return data ?? ids.map(() => false);
|
||||
}
|
||||
Reference in New Issue
Block a user