feat(miniapp): back data loads with query cache

This commit is contained in:
2026-03-11 19:52:50 +04:00
parent 7035300e03
commit 53d9dea48d
2 changed files with 103 additions and 16 deletions

View File

@@ -0,0 +1,76 @@
import { miniAppQueryClient } from './query-client'
import {
fetchMiniAppAdminSettings,
fetchMiniAppBillingCycle,
fetchMiniAppDashboard,
fetchMiniAppPendingMembers,
fetchMiniAppSession,
type MiniAppAdminCycleState,
type MiniAppAdminSettingsPayload,
type MiniAppDashboard,
type MiniAppPendingMember,
type MiniAppSession
} from '../miniapp-api'
export const miniAppQueryKeys = {
session: (initData: string, joinToken?: string) =>
['miniapp', 'session', initData, joinToken ?? null] as const,
dashboard: (initData: string) => ['miniapp', 'dashboard', initData] as const,
pendingMembers: (initData: string) => ['miniapp', 'pending-members', initData] as const,
adminSettings: (initData: string) => ['miniapp', 'admin-settings', initData] as const,
billingCycle: (initData: string) => ['miniapp', 'billing-cycle', initData] as const
}
export function fetchSessionQuery(initData: string, joinToken?: string): Promise<MiniAppSession> {
return miniAppQueryClient.fetchQuery({
queryKey: miniAppQueryKeys.session(initData, joinToken),
queryFn: () => fetchMiniAppSession(initData, joinToken)
})
}
export function fetchDashboardQuery(initData: string): Promise<MiniAppDashboard> {
return miniAppQueryClient.fetchQuery({
queryKey: miniAppQueryKeys.dashboard(initData),
queryFn: () => fetchMiniAppDashboard(initData)
})
}
export function fetchPendingMembersQuery(
initData: string
): Promise<readonly MiniAppPendingMember[]> {
return miniAppQueryClient.fetchQuery({
queryKey: miniAppQueryKeys.pendingMembers(initData),
queryFn: () => fetchMiniAppPendingMembers(initData)
})
}
export function fetchAdminSettingsQuery(initData: string): Promise<MiniAppAdminSettingsPayload> {
return miniAppQueryClient.fetchQuery({
queryKey: miniAppQueryKeys.adminSettings(initData),
queryFn: () => fetchMiniAppAdminSettings(initData)
})
}
export function fetchBillingCycleQuery(initData: string): Promise<MiniAppAdminCycleState> {
return miniAppQueryClient.fetchQuery({
queryKey: miniAppQueryKeys.billingCycle(initData),
queryFn: () => fetchMiniAppBillingCycle(initData)
})
}
export async function invalidateHouseholdQueries(initData: string) {
await Promise.all([
miniAppQueryClient.invalidateQueries({
queryKey: miniAppQueryKeys.dashboard(initData)
}),
miniAppQueryClient.invalidateQueries({
queryKey: miniAppQueryKeys.pendingMembers(initData)
}),
miniAppQueryClient.invalidateQueries({
queryKey: miniAppQueryKeys.adminSettings(initData)
}),
miniAppQueryClient.invalidateQueries({
queryKey: miniAppQueryKeys.billingCycle(initData)
})
])
}