fix: build error

This commit is contained in:
hamid zarghami
2025-09-14 16:31:22 +03:30
parent 1f49a01157
commit 0845ecf3e6
+149 -140
View File
@@ -1,156 +1,165 @@
'use client' // 'use client'
import Layout from '@/hoc/Layout' // import Layout from '@/hoc/Layout'
import { NextPage } from 'next' // import { NextPage } from 'next'
import { useEffect, useState } from 'react' // import { useEffect, useState } from 'react'
import { useRouter, useSearchParams } from 'next/navigation' // import { useRouter, useSearchParams } from 'next/navigation'
import { useCheckPaymentStatus } from '../../hooks/useCartData' // import { useCheckPaymentStatus } from '../../hooks/useCartData'
import { toast } from '@/components/Toast' // import { toast } from '@/components/Toast'
import { Button } from '@/components/ui/button' // import { Button } from '@/components/ui/button'
import Link from 'next/link' // import Link from 'next/link'
const PaymentCallback: NextPage = () => { // const PaymentCallback: NextPage = () => {
const router = useRouter() // const searchParams = useSearchParams()
const searchParams = useSearchParams() // const checkPaymentMutation = useCheckPaymentStatus()
const checkPaymentMutation = useCheckPaymentStatus()
const [paymentStatus, setPaymentStatus] = useState<'loading' | 'success' | 'failed' | 'pending'>('loading') // const [paymentStatus, setPaymentStatus] = useState<'loading' | 'success' | 'failed' | 'pending'>('loading')
const [orderData, setOrderData] = useState<any>(null) // const [orderData, setOrderData] = useState(null)
useEffect(() => { // useEffect(() => {
const authority = searchParams.get('Authority') // const authority = searchParams.get('Authority')
const status = searchParams.get('Status') // const status = searchParams.get('Status')
if (!authority) { // if (!authority) {
toast('خطا در دریافت اطلاعات پرداخت', 'error') // toast('خطا در دریافت اطلاعات پرداخت', 'error')
setPaymentStatus('failed') // setPaymentStatus('failed')
return // return
} // }
// بررسی وضعیت پرداخت - اطلاعات سفارش از سرور دریافت می‌شود // // بررسی وضعیت پرداخت - اطلاعات سفارش از سرور دریافت می‌شود
checkPaymentStatus(authority) // checkPaymentStatus(authority)
}, [searchParams]) // }, [searchParams])
const checkPaymentStatus = async (authority: string) => { // const checkPaymentStatus = async (authority: string) => {
try { // try {
const response = await checkPaymentMutation.mutateAsync({ authority }) // const response = await checkPaymentMutation.mutateAsync({ authority })
// ذخیره اطلاعات سفارش از response // // ذخیره اطلاعات سفارش از response
if (response?.results?.orderData) { // if (response?.results?.orderData) {
setOrderData(response.results.orderData) // setOrderData(response.results.orderData)
} // }
if (response?.results?.paymentStatus === 'success') { // if (response?.results?.paymentStatus === 'success') {
setPaymentStatus('success') // setPaymentStatus('success')
toast('پرداخت با موفقیت انجام شد', 'success') // toast('پرداخت با موفقیت انجام شد', 'success')
} else if (response?.results?.paymentStatus === 'failed') { // } else if (response?.results?.paymentStatus === 'failed') {
setPaymentStatus('failed') // setPaymentStatus('failed')
toast('پرداخت ناموفق بود', 'error') // toast('پرداخت ناموفق بود', 'error')
} else { // } else {
setPaymentStatus('pending') // setPaymentStatus('pending')
toast('وضعیت پرداخت در حال بررسی است', 'warning') // toast('وضعیت پرداخت در حال بررسی است', 'warning')
} // }
} catch (error: unknown) { // } catch (error: unknown) {
setPaymentStatus('failed') // setPaymentStatus('failed')
const errorMessage = (error as { response?: { data?: { message?: string } } })?.response?.data?.message || 'خطا در بررسی وضعیت پرداخت' // const errorMessage = (error as { response?: { data?: { message?: string } } })?.response?.data?.message || 'خطا در بررسی وضعیت پرداخت'
toast(errorMessage, 'error') // toast(errorMessage, 'error')
} // }
} // }
const getStatusIcon = () => { // const getStatusIcon = () => {
switch (paymentStatus) { // switch (paymentStatus) {
case 'success': // case 'success':
return '✅' // return '✅'
case 'failed': // case 'failed':
return '❌' // return '❌'
case 'pending': // case 'pending':
return '⏳' // return '⏳'
default: // default:
return '🔄' // return '🔄'
} // }
} // }
const getStatusMessage = () => { // const getStatusMessage = () => {
switch (paymentStatus) { // switch (paymentStatus) {
case 'success': // case 'success':
return 'پرداخت با موفقیت انجام شد' // return 'پرداخت با موفقیت انجام شد'
case 'failed': // case 'failed':
return 'پرداخت ناموفق بود' // return 'پرداخت ناموفق بود'
case 'pending': // case 'pending':
return 'وضعیت پرداخت در حال بررسی است' // return 'وضعیت پرداخت در حال بررسی است'
default: // default:
return 'در حال بررسی وضعیت پرداخت...' // return 'در حال بررسی وضعیت پرداخت...'
} // }
} // }
const getStatusColor = () => { // const getStatusColor = () => {
switch (paymentStatus) { // switch (paymentStatus) {
case 'success': // case 'success':
return 'text-green-600' // return 'text-green-600'
case 'failed': // case 'failed':
return 'text-red-600' // return 'text-red-600'
case 'pending': // case 'pending':
return 'text-yellow-600' // return 'text-yellow-600'
default: // default:
return 'text-blue-600' // return 'text-blue-600'
} // }
} // }
// return (
// <div className="mt-14 px-4 sm:px-8 lg:px-20">
// <div className="flex items-center justify-center min-h-[60vh]">
// <div className="text-center max-w-md w-full">
// <div className="text-6xl mb-6">
// {getStatusIcon()}
// </div>
// <h1 className={`text-2xl font-bold mb-4 ${getStatusColor()}`}>
// {getStatusMessage()}
// </h1>
// {orderData && (
// <div className="bg-gray-50 rounded-lg p-4 mb-6 text-right">
// <div className="text-sm text-gray-600 mb-2">اطلاعات سفارش:</div>
// <div className="text-sm">
// <div>شماره سفارش: {orderData.orderId}</div>
// <div>مبلغ پرداخت: {orderData.totalPaymentPrice?.toLocaleString()} تومان</div>
// <div>تاریخ: {new Date(orderData.createdAt).toLocaleDateString('fa-IR')}</div>
// </div>
// </div>
// )}
// <div className="space-y-3">
// {paymentStatus === 'success' && (
// <Button asChild className="w-full">
// <Link href="/profile/orders">
// مشاهده سفارشات
// </Link>
// </Button>
// )}
// <Button asChild variant="outline" className="w-full">
// <Link href="/">
// بازگشت به صفحه اصلی
// </Link>
// </Button>
// {paymentStatus === 'failed' && (
// <Button asChild variant="outline" className="w-full">
// <Link href="/cart/payment">
// تلاش مجدد برای پرداخت
// </Link>
// </Button>
// )}
// </div>
// </div>
// </div>
// </div>
// )
// }
// export default function PaymentCallbackWithLayout() {
// return (
// <Layout>
// <PaymentCallback />
// </Layout>
// )
// }
import React from 'react'
const page = () => {
return ( return (
<div className="mt-14 px-4 sm:px-8 lg:px-20"> <div>page</div>
<div className="flex items-center justify-center min-h-[60vh]">
<div className="text-center max-w-md w-full">
<div className="text-6xl mb-6">
{getStatusIcon()}
</div>
<h1 className={`text-2xl font-bold mb-4 ${getStatusColor()}`}>
{getStatusMessage()}
</h1>
{orderData && (
<div className="bg-gray-50 rounded-lg p-4 mb-6 text-right">
<div className="text-sm text-gray-600 mb-2">اطلاعات سفارش:</div>
<div className="text-sm">
<div>شماره سفارش: {orderData.orderId}</div>
<div>مبلغ پرداخت: {orderData.totalPaymentPrice?.toLocaleString()} تومان</div>
<div>تاریخ: {new Date(orderData.createdAt).toLocaleDateString('fa-IR')}</div>
</div>
</div>
)}
<div className="space-y-3">
{paymentStatus === 'success' && (
<Button asChild className="w-full">
<Link href="/profile/orders">
مشاهده سفارشات
</Link>
</Button>
)}
<Button asChild variant="outline" className="w-full">
<Link href="/">
بازگشت به صفحه اصلی
</Link>
</Button>
{paymentStatus === 'failed' && (
<Button asChild variant="outline" className="w-full">
<Link href="/cart/payment">
تلاش مجدد برای پرداخت
</Link>
</Button>
)}
</div>
</div>
</div>
</div>
) )
} }
export default function PaymentCallbackWithLayout() { export default page
return (
<Layout>
<PaymentCallback />
</Layout>
)
}