|
|
@@ -17,14 +17,15 @@ export async function addProductToCartAction(param:AddToCartVariables) {
|
|
|
const cookieStore = await cookies();
|
|
|
const guestCartToken = cookieStore.get(GUEST_CART_TOKEN)?.value;
|
|
|
|
|
|
-
|
|
|
+ // 针对游客
|
|
|
if(!accessToken && !guestCartToken) {
|
|
|
const createRes = await createGuestCartToken();
|
|
|
if(!createRes.success) {
|
|
|
return {
|
|
|
success: false,
|
|
|
msg: createRes.msg,
|
|
|
- cartData: null
|
|
|
+ cartData: null,
|
|
|
+ error: new Error(createRes.msg)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -42,6 +43,7 @@ export async function addProductToCartAction(param:AddToCartVariables) {
|
|
|
if(responseData) {
|
|
|
const responseCartId = responseData.id;
|
|
|
const responseCartToken = responseData.cartToken;
|
|
|
+ // 游客状态下
|
|
|
if(!accessToken && responseCartId !== responseCartToken) {
|
|
|
await setGuestCookie({
|
|
|
guestCartId: responseCartId,
|
|
|
@@ -49,27 +51,42 @@ export async function addProductToCartAction(param:AddToCartVariables) {
|
|
|
isGuest: true
|
|
|
});
|
|
|
}
|
|
|
+ // 登录状态,但是后端发现用户的accessToken不可用返回一个游客token时,需要走退出登录流程,提示用户过期了需要重新登录
|
|
|
+ if(accessToken && responseCartId !== responseCartToken) {
|
|
|
+ const e = new Error("Authorization Bearer token has expired!");
|
|
|
+ e.name = "UnauthorizedError";
|
|
|
+ return {
|
|
|
+ success: false,
|
|
|
+ msg: e.message,
|
|
|
+ cartData: response.data,
|
|
|
+ error: e
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
/** 兜底代码 end*/
|
|
|
|
|
|
return {
|
|
|
success: true,
|
|
|
msg: '',
|
|
|
- cartData: response.data
|
|
|
+ cartData: response.data,
|
|
|
+ error: null
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
return {
|
|
|
success: false,
|
|
|
msg: response.error.message,
|
|
|
- cartData: null
|
|
|
+ cartData: null,
|
|
|
+ error: new Error(response.error.message)
|
|
|
}
|
|
|
}
|
|
|
} catch(error) {
|
|
|
+ const msg = error instanceof Error ? error.message : 'Add product to cart failed!';
|
|
|
return {
|
|
|
success: false,
|
|
|
- msg: error instanceof Error ? error.message : 'Add product to cart failed!',
|
|
|
- cartData: null
|
|
|
+ msg: msg,
|
|
|
+ cartData: null,
|
|
|
+ error: new Error(msg)
|
|
|
}
|
|
|
}
|
|
|
};
|