From bcf5431f2bf15886f310536eff9a54b4c0a6d429 Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Mon, 6 Oct 2025 08:40:38 +0330 Subject: [PATCH] faq --- src/app/faq/hooks/useFaqData.ts | 10 +++++ src/app/faq/page.tsx | 63 +++++++++++++++++-------------- src/app/faq/service/FaqService.ts | 6 +++ src/app/faq/types/Types.ts | 20 ++++++++++ 4 files changed, 70 insertions(+), 29 deletions(-) create mode 100644 src/app/faq/hooks/useFaqData.ts create mode 100644 src/app/faq/service/FaqService.ts create mode 100644 src/app/faq/types/Types.ts diff --git a/src/app/faq/hooks/useFaqData.ts b/src/app/faq/hooks/useFaqData.ts new file mode 100644 index 0000000..0b770a7 --- /dev/null +++ b/src/app/faq/hooks/useFaqData.ts @@ -0,0 +1,10 @@ +import { useQuery } from "@tanstack/react-query"; +import { getFaq } from "../service/FaqService"; + +export const useGetFaq = (page: string) => { + return useQuery({ + queryKey: ["faq"], + queryFn: () => getFaq(page), + enabled: !!page, + }); +}; diff --git a/src/app/faq/page.tsx b/src/app/faq/page.tsx index 6b8dc14..b8b6069 100644 --- a/src/app/faq/page.tsx +++ b/src/app/faq/page.tsx @@ -3,35 +3,40 @@ import { NextPage } from 'next' import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion' import Layout from '@/hoc/Layout' -import { SHOP_CONFIG } from '@/config/const' +import { useGetFaq } from './hooks/useFaqData' +import { FaqItem } from './types/Types' +import PageLoading from '@/components/PageLoading' const FaqPage: NextPage = () => { - const faqData = [ - { - question: "ثبت نام به عنوان فروشنده در دیجی کالا به چه معناست؟", - answer: "با تکمیل ثبت نام پنل آنلاین فروشگاهی از دیجی کالا دریافت میکنید که میتوانید کالاهای خود را به صورت آنلاین به تمام نقاط ایران به فروش برسانید کار با این پنل بسیار ساده است و اصلا نیاز به تخصص خاصی ندارد." - }, - { - question: "در مراحل ثبت نام خطای تکراری بودن شماره ملی را دریافت میکنم", - answer: "این خطا معمولاً زمانی رخ می‌دهد که شماره ملی قبلاً در سیستم ثبت شده است. در صورت اطمینان از صحت اطلاعات، با پشتیبانی تماس بگیرید." - }, - { - question: `برای ثبت نام در ${SHOP_CONFIG.fullName} به چه مدارکی نیاز است؟`, - answer: `برای ثبت نام در ${SHOP_CONFIG.fullName} نیاز به مدارک شناسایی، مجوزهای کسب و کار و اطلاعات بانکی معتبر دارید.` - }, - { - question: "نام تجاری به چه معناست ؟", - answer: "نام تجاری نامی است که کسب و کار شما با آن شناخته می‌شود و می‌تواند متفاوت از نام قانونی شرکت باشد." - }, - { - question: "در مراحل ثبت نام پس از وارد کردن شماره شبا خطا دریافت میکنم", - answer: "اطمینان حاصل کنید که شماره شبا به درستی وارد شده و متعلق به حساب بانکی معتبر است." - }, - { - question: "در مورد بندهای قرارداد سوال دارم", - answer: "برای دریافت اطلاعات دقیق در مورد بندهای قرارداد، لطفاً با بخش حقوقی یا پشتیبانی تماس بگیرید." - } - ] + + const { data, isLoading, error } = useGetFaq('Faq'); + + if (isLoading) { + return ( + + + + ) + } + + if (error) { + return ( + +
+
+

+ خطا در بارگذاری اطلاعات +

+

+ متاسفانه در بارگذاری سوالات متداول مشکلی پیش آمده است. لطفا دوباره تلاش کنید. +

+
+
+
+ ) + } + + const faqData: FaqItem[] = data?.results?.faqs || [] return ( @@ -42,9 +47,9 @@ const FaqPage: NextPage = () => {

سوالات متداول

-

+ {/*

لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است -

+

*/} {/* FAQ Section */} diff --git a/src/app/faq/service/FaqService.ts b/src/app/faq/service/FaqService.ts new file mode 100644 index 0000000..beb8769 --- /dev/null +++ b/src/app/faq/service/FaqService.ts @@ -0,0 +1,6 @@ +import axios from "@/config/axios"; + +export const getFaq = async (page: string) => { + const { data } = await axios.get(`/faq?page=${page}`); + return data; +}; diff --git a/src/app/faq/types/Types.ts b/src/app/faq/types/Types.ts new file mode 100644 index 0000000..5f8cf05 --- /dev/null +++ b/src/app/faq/types/Types.ts @@ -0,0 +1,20 @@ +export interface FaqItem { + _id: string; + question: string; + answer: string; + page: string; + createdAt: string; + updatedAt: string; +} + +export interface FaqResponse { + status: number; + success: boolean; + results: { + faqs: FaqItem[]; + }; +} + +export interface FaqParams { + page: string; +}