page.tsx 1.4 KB

123456789101112131415161718192021222324252627282930313233
  1. import {Suspense} from "react";
  2. import { cookies } from 'next/headers';
  3. import { redirect, RedirectType } from 'next/navigation'
  4. import {authorizationGraphqlQuery} from "@/lib/graphql-fetch";
  5. import {GET_ORDER_DETAILS} from "@/graphql";
  6. import { OrderDetailsData } from "@/types/customer/type";
  7. import SuccessPageSkeleton from "./_components/SuccessPageSkeleton";
  8. import OrderDetailWrapper from "./_components/OrderDetailWrapper";
  9. import { GUEST_CART_TOKEN,GUEST_CART_ID } from "@/utils/constants";
  10. // 如果是游客:请求完订单详情后删除cookie里原来的carttoken cartid
  11. export default async function SuccessPage({searchParams}: {
  12. searchParams?: Promise<{ [key: string]: string | string[] | undefined }>;
  13. }) {
  14. const cookieStore = await cookies();
  15. // 登录用户cookie里没有GUEST_CART_ID
  16. if(!cookieStore.get(GUEST_CART_TOKEN)) {
  17. redirect('/', RedirectType.replace);
  18. }
  19. const query = await searchParams;
  20. const orderid = query?.orderid;
  21. const orderDetailPromise = authorizationGraphqlQuery<OrderDetailsData>(GET_ORDER_DETAILS,{
  22. id: orderid,// `/api/shop/customer-orders/${orderid}`
  23. });
  24. return (
  25. <div className="w-full">
  26. <Suspense fallback={<SuccessPageSkeleton />}>
  27. <OrderDetailWrapper orderDetailPromise={orderDetailPromise} />
  28. </Suspense>
  29. </div>
  30. );
  31. }