@@ -7,24 +7,39 @@ import {
7
7
ApolloLink ,
8
8
} from '@apollo/client' ;
9
9
10
+ const SEVEN_DAYS = 7 * 24 * 60 * 60 * 1000 ; // 7 days in milliseconds
11
+
10
12
/**
11
13
* Middleware operation
12
14
* If we have a session token in localStorage, add it to the GraphQL request as a Session header.
13
15
*/
14
16
export const middleware = new ApolloLink ( ( operation , forward ) => {
15
17
/**
16
18
* If session data exist in local storage, set value as session header.
17
- * Here we also delete the session if it is older than 24 hours
19
+ * Here we also delete the session if it is older than 7 days
18
20
*/
19
- const session = process . browser ? localStorage . getItem ( 'woo-session' ) : null ;
21
+ const sessionData = process . browser
22
+ ? JSON . parse ( localStorage . getItem ( 'woo-session' ) )
23
+ : null ;
24
+
25
+ if ( sessionData ) {
26
+ const { token, createdTime } = sessionData ;
20
27
21
- if ( session ) {
22
- operation . setContext ( ( ) => ( {
23
- headers : {
24
- 'woocommerce-session' : `Session ${ session } ` ,
25
- } ,
26
- } ) ) ;
28
+ // Check if the token is older than 7 days
29
+ if ( Date . now ( ) - createdTime > SEVEN_DAYS ) {
30
+ // If it is, delete it
31
+ localStorage . removeItem ( 'woo-session' ) ;
32
+ localStorage . setItem ( 'woocommerce-cart' , JSON . stringify ( { } ) ) ;
33
+ } else {
34
+ // If it's not, use the token
35
+ operation . setContext ( ( ) => ( {
36
+ headers : {
37
+ 'woocommerce-session' : `Session ${ token } ` ,
38
+ } ,
39
+ } ) ) ;
40
+ }
27
41
}
42
+
28
43
return forward ( operation ) ;
29
44
} ) ;
30
45
@@ -51,7 +66,10 @@ export const afterware = new ApolloLink((operation, forward) =>
51
66
localStorage . removeItem ( 'woo-session' ) ;
52
67
// Update session new data if changed.
53
68
} else if ( ! localStorage . getItem ( 'woo-session' ) ) {
54
- localStorage . setItem ( 'woo-session' , session ) ;
69
+ localStorage . setItem (
70
+ 'woo-session' ,
71
+ JSON . stringify ( { token : session , createdTime : Date . now ( ) } ) ,
72
+ ) ;
55
73
}
56
74
}
57
75
0 commit comments