admin/queries/consumer/useWalletAndBookmarkQueries.ts
alisaza e1eaf5eff5 feat: initial ghabilee-admin backoffice app
Extract admin dashboard from ghabilee-frontend2 into a dedicated Next.js
app for backoffice.ghabilee.ir (no SEO indexing / Clarity).
2026-09-05 13:12:59 +03:30

69 lines
2.3 KiB
TypeScript

'use client'
import { useQuery } from '@tanstack/react-query'
import { consumerKeys } from '@/queries/consumerKeys'
import { unwrapService } from '@/queries/unwrapService'
import { getBookmarkedEvents } from '@/services/eventBookmarks'
import { discoveryReferenceStaleTime, fetchDiscoveryCategories } from '@/services/discovery'
import { fetchAllCities } from '@/services/geography'
import { LIST_WALLET_TRANSACTIONS } from '@/services/wallet'
import { LIST_BANK_ACCOUNTS, LIST_WITHDRAWAL_REQUESTS } from '@/services/withdrawals'
import { LIST_MY_SETTLEMENTS } from '@/services/settlements'
export const useBookmarksQuery = (enabled = true) =>
useQuery({
queryKey: consumerKeys.bookmarks(),
enabled,
queryFn: () => getBookmarkedEvents(),
})
export const useDiscoveryCitiesQuery = (enabled = true) =>
useQuery({
queryKey: consumerKeys.discoveryCities(),
enabled,
queryFn: () => fetchAllCities(),
staleTime: discoveryReferenceStaleTime,
})
export const useDiscoveryCategoriesQuery = (enabled = true) =>
useQuery({
queryKey: consumerKeys.discoveryCategories(),
enabled,
queryFn: () => fetchDiscoveryCategories(),
staleTime: discoveryReferenceStaleTime,
})
export const useWalletTransactionsQuery = (enabled = true) =>
useQuery({
queryKey: consumerKeys.walletTransactions(),
enabled,
queryFn: async () => unwrapService(await LIST_WALLET_TRANSACTIONS({ errorMode: 'parent' })),
// Persisted to localStorage for instant paint on cold start (see
// lib/queryClient.ts) — transaction history must never be trusted
// stale, so force an immediate background refetch on every mount
// instead of the default 30s staleTime.
staleTime: 0,
})
export const useBankAccountsQuery = (enabled = true) =>
useQuery({
queryKey: consumerKeys.bankAccounts(),
enabled,
queryFn: async () => unwrapService(await LIST_BANK_ACCOUNTS({ errorMode: 'parent' })),
})
export const useWithdrawalRequestsQuery = (enabled = true) =>
useQuery({
queryKey: consumerKeys.withdrawalRequests(),
enabled,
queryFn: async () => unwrapService(await LIST_WITHDRAWAL_REQUESTS({ errorMode: 'parent' })),
})
export const useSettlementRequestsQuery = (enabled = true) =>
useQuery({
queryKey: consumerKeys.settlementRequests(),
enabled,
queryFn: () => LIST_MY_SETTLEMENTS(),
})