Files
VRCX/src/query/policies.js
2026-03-07 18:41:41 +09:00

98 lines
2.7 KiB
JavaScript

const SECOND = 1000;
export const entityQueryPolicies = Object.freeze({
user: Object.freeze({
staleTime: 20 * SECOND,
gcTime: 90 * SECOND,
retry: 1,
refetchOnWindowFocus: false
}),
avatar: Object.freeze({
staleTime: 60 * SECOND,
gcTime: 300 * SECOND,
retry: 1,
refetchOnWindowFocus: false
}),
world: Object.freeze({
staleTime: 60 * SECOND,
gcTime: 300 * SECOND,
retry: 1,
refetchOnWindowFocus: false
}),
group: Object.freeze({
staleTime: 60 * SECOND,
gcTime: 300 * SECOND,
retry: 1,
refetchOnWindowFocus: false
}),
groupCollection: Object.freeze({
staleTime: 60 * SECOND,
gcTime: 300 * SECOND,
retry: 1,
refetchOnWindowFocus: false
}),
worldCollection: Object.freeze({
staleTime: 60 * SECOND,
gcTime: 300 * SECOND,
retry: 1,
refetchOnWindowFocus: false
}),
instance: Object.freeze({
staleTime: 0,
gcTime: 10 * SECOND,
retry: 0,
refetchOnWindowFocus: false
}),
friendList: Object.freeze({
staleTime: 20 * SECOND,
gcTime: 90 * SECOND,
retry: 1,
refetchOnWindowFocus: false
}),
favoriteCollection: Object.freeze({
staleTime: 60 * SECOND,
gcTime: 300 * SECOND,
retry: 1,
refetchOnWindowFocus: false
}),
galleryCollection: Object.freeze({
staleTime: 60 * SECOND,
gcTime: 300 * SECOND,
retry: 1,
refetchOnWindowFocus: false
}),
inventoryCollection: Object.freeze({
staleTime: 20 * SECOND,
gcTime: 120 * SECOND,
retry: 1,
refetchOnWindowFocus: false
}),
fileObject: Object.freeze({
staleTime: 60 * SECOND,
gcTime: 300 * SECOND,
retry: 1,
refetchOnWindowFocus: false
})
});
/**
* @param {'user'|'avatar'|'world'|'group'|'groupCollection'|'worldCollection'|'instance'|'friendList'|'favoriteCollection'|'galleryCollection'|'inventoryCollection'|'fileObject'} entity
* @returns {{staleTime: number, gcTime: number, retry: number, refetchOnWindowFocus: boolean}}
*/
export function getEntityQueryPolicy(entity) {
return entityQueryPolicies[entity];
}
/**
* @param {{staleTime: number, gcTime: number, retry: number, refetchOnWindowFocus: boolean}} policy
* @returns {{staleTime: number, gcTime: number, retry: number, refetchOnWindowFocus: boolean}}
*/
export function toQueryOptions(policy) {
return {
staleTime: policy.staleTime,
gcTime: policy.gcTime,
retry: policy.retry,
refetchOnWindowFocus: policy.refetchOnWindowFocus
};
}