| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- import {cookies} from "next/headers";
- import { serverGraphqlFetch } from "@utils/bagisto";
- import { CREATE_CART_TOKEN } from "@/graphql";
- import { GUEST_CART_ID, GUEST_CART_TOKEN, IS_GUEST, GUEST_COOKIE_OPTION } from "@/utils/constants";
- import { CreateCartTokenData } from "@/types/cart/type";
- export async function deleteGuestCookie(isGuest: boolean = true) {
- const cookieStore = await cookies();
- cookieStore.delete(GUEST_CART_TOKEN);
- cookieStore.delete(GUEST_CART_ID);
- cookieStore.set(IS_GUEST, isGuest ? "true" : "false");
- }
- export async function setGuestCookie({
- guestToken,
- guestCartId,
- isGuest
- }: {
- guestToken: string;
- guestCartId: string;
- isGuest: boolean;
- }) {
- const cookieOptions = {
- httpOnly: GUEST_COOKIE_OPTION.httpOnly,
- maxAge: GUEST_COOKIE_OPTION.maxAge,
- path: GUEST_COOKIE_OPTION.path,
- secure: GUEST_COOKIE_OPTION.secure,
- sameSite: GUEST_COOKIE_OPTION.sameSite,
- };
- const cookieStore = await cookies();
- cookieStore.set(GUEST_CART_TOKEN,guestToken,cookieOptions);
- cookieStore.set(GUEST_CART_ID,guestCartId,cookieOptions);
- cookieStore.set(IS_GUEST,isGuest ? "true" : "false");
- }
- export async function createGuestCartToken() {
- const cookieStore = await cookies();
- const existingToken = cookieStore.get(GUEST_CART_TOKEN)?.value;
- const existingCartId = cookieStore.get(GUEST_CART_ID)?.value;
- if (existingToken && existingCartId) {
- return {
- success: true,
- cartToken: existingToken,
- cartId: existingCartId,
- msg: ''
- };
- }
- try{
-
- const response = await serverGraphqlFetch<CreateCartTokenData>({
- query: CREATE_CART_TOKEN,
- cache: "no-store",
- takeAuthorization: false
- });
- const success = response.error ? false : true;
- let guestToken = null;
- let guestCartId = null;
- const msg = response.error ? response.error.message : '';
- if(success && response.data?.createCartToken) {
- guestToken = response.data.createCartToken.cartToken.sessionToken;
- guestCartId = response.data.createCartToken.cartToken.id;
- await setGuestCookie({
- guestToken,
- guestCartId,
- isGuest: true
- });
- }
-
- return {
- success: success,
- cartToken: guestToken,
- cartId: guestCartId,
- msg: msg
- };
- } catch(e: any) {
- return {
- success:false,
- cartToken: null,
- cartId: null,
- msg: e.message || 'Create guest cart token failed!'
- };
- }
- }
|