| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- "use server";
- import {cookies} from "next/headers";
- import { GUEST_CART_ID, GUEST_CART_TOKEN, IS_GUEST } from "@/utils/constants";
- import { serverGraphqlFetch } from "@utils/bagisto";
- import { CREATE_MERGE_CART } from "@/graphql";
- import { CreateMergeCartData } from "@/types/cart/type";
- export async function mergeCartAction(){
- const cookieStore = await cookies();
- const guestCartId = cookieStore.get(GUEST_CART_ID)?.value;
- cookieStore.delete(GUEST_CART_ID);
- cookieStore.delete(GUEST_CART_TOKEN);
- cookieStore.set(IS_GUEST,"false");
- if(!guestCartId){
-
- return {
- cartDetail: null,
- success:true,
- msg: ''
- };
- }
- try{
- // 调 Bagisto merge cart mutation
- const response = await serverGraphqlFetch<CreateMergeCartData,{cartId:number}>({
- query: CREATE_MERGE_CART,
- variables: {
- cartId: Number(guestCartId)
- },
- cache: "no-store",
- });
- const cartData = response.data?.createMergeCart?.mergeCart ?? null;
- let success = true;
- let msg = "";
- if(response.error) {
- success = false;
- msg = response.error.message;
- }
- return {
- cartDetail: cartData,
- success: success,
- msg: msg
- };
- } catch(e: any) {
- return {
- cartDetail: null,
- success:false,
- msg: e.message || 'Fail to merge cart.'
- };
- }
- }
|