mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-05-05 22:36:05 +02:00
refactor query requests to use queryRequest module
This commit is contained in:
@@ -2,7 +2,6 @@ import { describe, expect, test } from 'vitest';
|
||||
|
||||
import {
|
||||
entityQueryPolicies,
|
||||
getEntityQueryPolicy,
|
||||
toQueryOptions
|
||||
} from '../policies';
|
||||
|
||||
@@ -42,6 +41,32 @@ describe('query policy configuration', () => {
|
||||
retry: 1,
|
||||
refetchOnWindowFocus: false
|
||||
});
|
||||
expect(entityQueryPolicies.groupCalendarCollection).toMatchObject({
|
||||
staleTime: 120000,
|
||||
gcTime: 600000,
|
||||
retry: 1,
|
||||
refetchOnWindowFocus: false
|
||||
});
|
||||
expect(
|
||||
entityQueryPolicies.groupFollowingCalendarCollection
|
||||
).toMatchObject({
|
||||
staleTime: 60000,
|
||||
gcTime: 300000,
|
||||
retry: 1,
|
||||
refetchOnWindowFocus: false
|
||||
});
|
||||
expect(entityQueryPolicies.groupFeaturedCalendarCollection).toMatchObject({
|
||||
staleTime: 300000,
|
||||
gcTime: 900000,
|
||||
retry: 1,
|
||||
refetchOnWindowFocus: false
|
||||
});
|
||||
expect(entityQueryPolicies.groupCalendarEvent).toMatchObject({
|
||||
staleTime: 120000,
|
||||
gcTime: 600000,
|
||||
retry: 1,
|
||||
refetchOnWindowFocus: false
|
||||
});
|
||||
|
||||
expect(entityQueryPolicies.worldCollection).toMatchObject({
|
||||
staleTime: 60000,
|
||||
@@ -77,6 +102,42 @@ describe('query policy configuration', () => {
|
||||
retry: 1,
|
||||
refetchOnWindowFocus: false
|
||||
});
|
||||
expect(entityQueryPolicies.inventoryObject).toMatchObject({
|
||||
staleTime: 60000,
|
||||
gcTime: 300000,
|
||||
retry: 1,
|
||||
refetchOnWindowFocus: false
|
||||
});
|
||||
expect(entityQueryPolicies.avatarGallery).toMatchObject({
|
||||
staleTime: 30000,
|
||||
gcTime: 120000,
|
||||
retry: 1,
|
||||
refetchOnWindowFocus: false
|
||||
});
|
||||
expect(entityQueryPolicies.fileAnalysis).toMatchObject({
|
||||
staleTime: 120000,
|
||||
gcTime: 600000,
|
||||
retry: 1,
|
||||
refetchOnWindowFocus: false
|
||||
});
|
||||
expect(entityQueryPolicies.worldPersistData).toMatchObject({
|
||||
staleTime: 120000,
|
||||
gcTime: 600000,
|
||||
retry: 1,
|
||||
refetchOnWindowFocus: false
|
||||
});
|
||||
expect(entityQueryPolicies.mutualCounts).toMatchObject({
|
||||
staleTime: 120000,
|
||||
gcTime: 600000,
|
||||
retry: 1,
|
||||
refetchOnWindowFocus: false
|
||||
});
|
||||
expect(entityQueryPolicies.visits).toMatchObject({
|
||||
staleTime: 300000,
|
||||
gcTime: 900000,
|
||||
retry: 1,
|
||||
refetchOnWindowFocus: false
|
||||
});
|
||||
|
||||
expect(entityQueryPolicies.fileObject).toMatchObject({
|
||||
staleTime: 60000,
|
||||
@@ -86,34 +147,6 @@ describe('query policy configuration', () => {
|
||||
});
|
||||
});
|
||||
|
||||
test('exposes entity policy lookup', () => {
|
||||
expect(getEntityQueryPolicy('user')).toBe(entityQueryPolicies.user);
|
||||
expect(getEntityQueryPolicy('avatar')).toBe(entityQueryPolicies.avatar);
|
||||
expect(getEntityQueryPolicy('world')).toBe(entityQueryPolicies.world);
|
||||
expect(getEntityQueryPolicy('group')).toBe(entityQueryPolicies.group);
|
||||
expect(getEntityQueryPolicy('groupCollection')).toBe(
|
||||
entityQueryPolicies.groupCollection
|
||||
);
|
||||
expect(getEntityQueryPolicy('worldCollection')).toBe(
|
||||
entityQueryPolicies.worldCollection
|
||||
);
|
||||
expect(getEntityQueryPolicy('friendList')).toBe(
|
||||
entityQueryPolicies.friendList
|
||||
);
|
||||
expect(getEntityQueryPolicy('favoriteCollection')).toBe(
|
||||
entityQueryPolicies.favoriteCollection
|
||||
);
|
||||
expect(getEntityQueryPolicy('galleryCollection')).toBe(
|
||||
entityQueryPolicies.galleryCollection
|
||||
);
|
||||
expect(getEntityQueryPolicy('inventoryCollection')).toBe(
|
||||
entityQueryPolicies.inventoryCollection
|
||||
);
|
||||
expect(getEntityQueryPolicy('fileObject')).toBe(
|
||||
entityQueryPolicies.fileObject
|
||||
);
|
||||
});
|
||||
|
||||
test('normalizes policy values to query options', () => {
|
||||
const options = toQueryOptions(entityQueryPolicies.group);
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ export { queryClient } from './client';
|
||||
export { queryKeys } from './keys';
|
||||
export {
|
||||
entityQueryPolicies,
|
||||
getEntityQueryPolicy,
|
||||
toQueryOptions
|
||||
} from './policies';
|
||||
export {
|
||||
|
||||
@@ -50,12 +50,42 @@ export const queryKeys = Object.freeze({
|
||||
}
|
||||
],
|
||||
groupCalendar: (groupId) => ['group', groupId, 'calendar'],
|
||||
groupCalendars: ({ n = 100, offset = 0, date = '' } = {}) => [
|
||||
'group',
|
||||
'calendar',
|
||||
{
|
||||
n: Number(n),
|
||||
offset: Number(offset),
|
||||
date: String(date || '')
|
||||
}
|
||||
],
|
||||
followingGroupCalendars: ({ n = 100, offset = 0, date = '' } = {}) => [
|
||||
'group',
|
||||
'calendar',
|
||||
'following',
|
||||
{
|
||||
n: Number(n),
|
||||
offset: Number(offset),
|
||||
date: String(date || '')
|
||||
}
|
||||
],
|
||||
featuredGroupCalendars: ({ n = 100, offset = 0, date = '' } = {}) => [
|
||||
'group',
|
||||
'calendar',
|
||||
'featured',
|
||||
{
|
||||
n: Number(n),
|
||||
offset: Number(offset),
|
||||
date: String(date || '')
|
||||
}
|
||||
],
|
||||
groupCalendarEvent: ({ groupId, eventId } = {}) => [
|
||||
'group',
|
||||
groupId,
|
||||
'calendarEvent',
|
||||
eventId
|
||||
],
|
||||
avatarGallery: (avatarId) => ['avatar', avatarId, 'gallery'],
|
||||
worldsByUser: ({
|
||||
userId,
|
||||
n = 50,
|
||||
@@ -176,5 +206,20 @@ export const queryKeys = Object.freeze({
|
||||
userId,
|
||||
inventoryId
|
||||
],
|
||||
inventoryItem: (inventoryId) => ['inventory', 'item', inventoryId],
|
||||
inventoryTemplate: (inventoryTemplateId) => [
|
||||
'inventory',
|
||||
'template',
|
||||
inventoryTemplateId
|
||||
],
|
||||
fileAnalysis: ({ fileId, version, variant } = {}) => [
|
||||
'analysis',
|
||||
fileId,
|
||||
Number(version),
|
||||
String(variant || '')
|
||||
],
|
||||
worldPersistData: (worldId) => ['world', worldId, 'persistData'],
|
||||
mutualCounts: (userId) => ['user', userId, 'mutualCounts'],
|
||||
visits: () => ['visits'],
|
||||
file: (fileId) => ['file', fileId]
|
||||
});
|
||||
|
||||
+60
-8
@@ -31,6 +31,30 @@ export const entityQueryPolicies = Object.freeze({
|
||||
retry: 1,
|
||||
refetchOnWindowFocus: false
|
||||
}),
|
||||
groupCalendarCollection: Object.freeze({
|
||||
staleTime: 120 * SECOND,
|
||||
gcTime: 600 * SECOND,
|
||||
retry: 1,
|
||||
refetchOnWindowFocus: false
|
||||
}),
|
||||
groupFollowingCalendarCollection: Object.freeze({
|
||||
staleTime: 60 * SECOND,
|
||||
gcTime: 300 * SECOND,
|
||||
retry: 1,
|
||||
refetchOnWindowFocus: false
|
||||
}),
|
||||
groupFeaturedCalendarCollection: Object.freeze({
|
||||
staleTime: 300 * SECOND,
|
||||
gcTime: 900 * SECOND,
|
||||
retry: 1,
|
||||
refetchOnWindowFocus: false
|
||||
}),
|
||||
groupCalendarEvent: Object.freeze({
|
||||
staleTime: 120 * SECOND,
|
||||
gcTime: 600 * SECOND,
|
||||
retry: 1,
|
||||
refetchOnWindowFocus: false
|
||||
}),
|
||||
worldCollection: Object.freeze({
|
||||
staleTime: 60 * SECOND,
|
||||
gcTime: 300 * SECOND,
|
||||
@@ -61,6 +85,42 @@ export const entityQueryPolicies = Object.freeze({
|
||||
retry: 1,
|
||||
refetchOnWindowFocus: false
|
||||
}),
|
||||
inventoryObject: Object.freeze({
|
||||
staleTime: 60 * SECOND,
|
||||
gcTime: 300 * SECOND,
|
||||
retry: 1,
|
||||
refetchOnWindowFocus: false
|
||||
}),
|
||||
avatarGallery: Object.freeze({
|
||||
staleTime: 30 * SECOND,
|
||||
gcTime: 120 * SECOND,
|
||||
retry: 1,
|
||||
refetchOnWindowFocus: false
|
||||
}),
|
||||
fileAnalysis: Object.freeze({
|
||||
staleTime: 120 * SECOND,
|
||||
gcTime: 600 * SECOND,
|
||||
retry: 1,
|
||||
refetchOnWindowFocus: false
|
||||
}),
|
||||
worldPersistData: Object.freeze({
|
||||
staleTime: 120 * SECOND,
|
||||
gcTime: 600 * SECOND,
|
||||
retry: 1,
|
||||
refetchOnWindowFocus: false
|
||||
}),
|
||||
mutualCounts: Object.freeze({
|
||||
staleTime: 120 * SECOND,
|
||||
gcTime: 600 * SECOND,
|
||||
retry: 1,
|
||||
refetchOnWindowFocus: false
|
||||
}),
|
||||
visits: Object.freeze({
|
||||
staleTime: 300 * SECOND,
|
||||
gcTime: 900 * SECOND,
|
||||
retry: 1,
|
||||
refetchOnWindowFocus: false
|
||||
}),
|
||||
fileObject: Object.freeze({
|
||||
staleTime: 60 * SECOND,
|
||||
gcTime: 300 * SECOND,
|
||||
@@ -69,14 +129,6 @@ export const entityQueryPolicies = Object.freeze({
|
||||
})
|
||||
});
|
||||
|
||||
/**
|
||||
* @param {'user'|'avatar'|'world'|'group'|'groupCollection'|'worldCollection'|'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}}
|
||||
|
||||
Reference in New Issue
Block a user