feat(payment): refactor payment configuration retrieval into a custom hook

This commit is contained in:
hamed
2026-06-15 12:56:43 +03:30
parent d13d8436ab
commit 3763c83471
3 changed files with 16 additions and 12 deletions
+12
View File
@@ -0,0 +1,12 @@
import { useQuery } from '@tanstack/react-query';
import { api } from '../lib/api';
import type { ApiResponse } from '../lib/api';
export function usePaymentConfig() {
const { data } = useQuery<ApiResponse<{ test_mode: boolean }>>({
queryKey: ['payment-config'],
queryFn: () => api.get('/api/v1/payment/config'),
staleTime: 5 * 60 * 1000,
});
return { isTestMode: data?.data?.test_mode ?? false };
}
+2 -6
View File
@@ -10,6 +10,7 @@ import {
import { api } from '../lib/api';
import type { ApiResponse, PaginatedResponse } from '../lib/api';
import type { SmsWalletBalance, SmsWalletLog, SmsSettings } from '../types';
import { usePaymentConfig } from '../hooks/usePaymentConfig';
import { formatRial, formatNumber, formatDateTime } from '../lib/utils';
import Modal from '../components/ui/Modal';
import Pagination from '../components/ui/Pagination';
@@ -44,17 +45,12 @@ function SmsWalletPageInner() {
queryFn: () => api.get('/api/v1/sms/settings'),
});
const { data: paymentConfigData } = useQuery<ApiResponse<{ test_mode: boolean }>>({
queryKey: ['payment-config'],
queryFn: () => api.get('/api/v1/payment/config'),
staleTime: 5 * 60 * 1000,
});
const { isTestMode } = usePaymentConfig();
const balance = balanceData?.data;
const logs = logsData?.data ?? EMPTY_LOGS;
const total = logsData?.meta?.totalRecords ?? 0;
const settings = settingsData?.data;
const isTestMode = paymentConfigData?.data?.test_mode ?? false;
const chargeForm = useForm<ChargeForm>({ resolver: zodResolver(chargeSchema) });
const watchAmount = chargeForm.watch('amount_rials');
+2 -6
View File
@@ -8,6 +8,7 @@ import { toast } from 'sonner';
import { api } from '../lib/api';
import type { ApiResponse } from '../lib/api';
import type { SubscriptionPlan, MySubscriptionData, SubscriptionPeriod } from '../types';
import { usePaymentConfig } from '../hooks/usePaymentConfig';
import { formatDate, formatRial, formatNumber } from '../lib/utils';
import Modal from '../components/ui/Modal';
@@ -60,17 +61,12 @@ export default function SubscriptionPage() {
queryFn: () => api.get('/api/v1/subscription/my'),
});
const { data: paymentConfigData } = useQuery<ApiResponse<{ test_mode: boolean }>>({
queryKey: ['payment-config'],
queryFn: () => api.get('/api/v1/payment/config'),
staleTime: 5 * 60 * 1000,
});
const { isTestMode } = usePaymentConfig();
const plans = plansData?.data ?? [];
const myRaw = myData?.data;
const my = myRaw?.subscription ?? null;
const usedTrial = myRaw?.used_trial ?? false;
const isTestMode = paymentConfigData?.data?.test_mode ?? false;
const trialMutation = useMutation({
mutationFn: () => api.post('/api/v1/subscription/trial', {}),