1
1
'use server' ;
2
2
3
3
import { TAGS } from 'lib/constants' ;
4
- import { addToCart , createCart , getCart , removeFromCart , updateCart } from 'lib/shopify' ;
4
+ import {
5
+ addToCart ,
6
+ createCart ,
7
+ getCart ,
8
+ removeFromCart ,
9
+ updateCart
10
+ } from 'lib/shopify' ;
5
11
import { revalidateTag } from 'next/cache' ;
6
12
import { cookies } from 'next/headers' ;
7
13
import { redirect } from 'next/navigation' ;
8
14
9
- export async function addItem ( prevState : any , selectedVariantId : string | undefined ) {
10
- let cartId = ( await cookies ( ) ) . get ( 'cartId' ) ?. value ;
11
-
12
- if ( ! cartId || ! selectedVariantId ) {
15
+ export async function addItem (
16
+ prevState : any ,
17
+ selectedVariantId : string | undefined
18
+ ) {
19
+ if ( ! selectedVariantId ) {
13
20
return 'Error adding item to cart' ;
14
21
}
15
22
16
23
try {
17
- await addToCart ( cartId , [ { merchandiseId : selectedVariantId , quantity : 1 } ] ) ;
24
+ await addToCart ( [ { merchandiseId : selectedVariantId , quantity : 1 } ] ) ;
18
25
revalidateTag ( TAGS . cart ) ;
19
26
} catch ( e ) {
20
27
return 'Error adding item to cart' ;
21
28
}
22
29
}
23
30
24
31
export async function removeItem ( prevState : any , merchandiseId : string ) {
25
- let cartId = ( await cookies ( ) ) . get ( 'cartId' ) ?. value ;
26
-
27
- if ( ! cartId ) {
28
- return 'Missing cart ID' ;
29
- }
30
-
31
32
try {
32
- const cart = await getCart ( cartId ) ;
33
+ const cart = await getCart ( ) ;
33
34
34
35
if ( ! cart ) {
35
36
return 'Error fetching cart' ;
36
37
}
37
38
38
- const lineItem = cart . lines . find ( ( line ) => line . merchandise . id === merchandiseId ) ;
39
+ const lineItem = cart . lines . find (
40
+ ( line ) => line . merchandise . id === merchandiseId
41
+ ) ;
39
42
40
43
if ( lineItem && lineItem . id ) {
41
- await removeFromCart ( cartId , [ lineItem . id ] ) ;
44
+ await removeFromCart ( [ lineItem . id ] ) ;
42
45
revalidateTag ( TAGS . cart ) ;
43
46
} else {
44
47
return 'Item not found in cart' ;
@@ -55,28 +58,24 @@ export async function updateItemQuantity(
55
58
quantity : number ;
56
59
}
57
60
) {
58
- let cartId = ( await cookies ( ) ) . get ( 'cartId' ) ?. value ;
59
-
60
- if ( ! cartId ) {
61
- return 'Missing cart ID' ;
62
- }
63
-
64
61
const { merchandiseId, quantity } = payload ;
65
62
66
63
try {
67
- const cart = await getCart ( cartId ) ;
64
+ const cart = await getCart ( ) ;
68
65
69
66
if ( ! cart ) {
70
67
return 'Error fetching cart' ;
71
68
}
72
69
73
- const lineItem = cart . lines . find ( ( line ) => line . merchandise . id === merchandiseId ) ;
70
+ const lineItem = cart . lines . find (
71
+ ( line ) => line . merchandise . id === merchandiseId
72
+ ) ;
74
73
75
74
if ( lineItem && lineItem . id ) {
76
75
if ( quantity === 0 ) {
77
- await removeFromCart ( cartId , [ lineItem . id ] ) ;
76
+ await removeFromCart ( [ lineItem . id ] ) ;
78
77
} else {
79
- await updateCart ( cartId , [
78
+ await updateCart ( [
80
79
{
81
80
id : lineItem . id ,
82
81
merchandiseId,
@@ -86,7 +85,7 @@ export async function updateItemQuantity(
86
85
}
87
86
} else if ( quantity > 0 ) {
88
87
// If the item doesn't exist in the cart and quantity > 0, add it
89
- await addToCart ( cartId , [ { merchandiseId, quantity } ] ) ;
88
+ await addToCart ( [ { merchandiseId, quantity } ] ) ;
90
89
}
91
90
92
91
revalidateTag ( TAGS . cart ) ;
@@ -97,9 +96,7 @@ export async function updateItemQuantity(
97
96
}
98
97
99
98
export async function redirectToCheckout ( ) {
100
- let cartId = ( await cookies ( ) ) . get ( 'cartId' ) ?. value ;
101
- let cart = await getCart ( cartId ) ;
102
-
99
+ let cart = await getCart ( ) ;
103
100
redirect ( cart ! . checkoutUrl ) ;
104
101
}
105
102
0 commit comments