File tree Expand file tree Collapse file tree 4 files changed +21
-5
lines changed Expand file tree Collapse file tree 4 files changed +21
-5
lines changed Original file line number Diff line number Diff line change @@ -11,8 +11,13 @@ export default function LogoutButton() {
11
11
< StyledButton
12
12
data-testid = "logout-button"
13
13
onClick = { ( ) => {
14
- client . writeData ( { data : { isLoggedIn : false } } ) ;
15
- localStorage . clear ( ) ;
14
+ client . writeData ( {
15
+ data : {
16
+ isLoggedIn : false ,
17
+ cartItems : [ ] ,
18
+ } ,
19
+ } ) ;
20
+ localStorage . setItem ( 'token' , '' ) ;
16
21
} }
17
22
>
18
23
< ExitIcon />
Original file line number Diff line number Diff line change @@ -29,10 +29,12 @@ const client = new ApolloClient({
29
29
typeDefs,
30
30
} ) ;
31
31
32
+ const token = localStorage . getItem ( 'token' ) ;
33
+ const cart = localStorage . getItem ( 'cart' ) ;
32
34
cache . writeData ( {
33
35
data : {
34
- isLoggedIn : ! ! localStorage . getItem ( ' token' ) ,
35
- cartItems : [ ] ,
36
+ isLoggedIn : ! ! token ,
37
+ cartItems : token && cart && JSON . parse ( cart ) [ token ] ? JSON . parse ( cart ) [ token ] : [ ] ,
36
38
} ,
37
39
} ) ;
38
40
Original file line number Diff line number Diff line change @@ -17,7 +17,13 @@ export default function Login() {
17
17
{
18
18
onCompleted ( { login } ) {
19
19
localStorage . setItem ( 'token' , login ) ;
20
- client . writeData ( { data : { isLoggedIn : true } } ) ;
20
+ const cart = localStorage . getItem ( 'cart' ) ;
21
+ client . writeData ( {
22
+ data : {
23
+ isLoggedIn : true ,
24
+ cartItems : login && cart && JSON . parse ( cart ) [ login ] ? JSON . parse ( cart ) [ login ] : [ ] ,
25
+ } ,
26
+ } ) ;
21
27
}
22
28
}
23
29
) ;
Original file line number Diff line number Diff line change @@ -32,6 +32,9 @@ export const resolvers = {
32
32
: [ ...cartItems , id ] ,
33
33
} ;
34
34
cache . writeQuery ( { query : GET_CART_ITEMS , data } ) ;
35
+ const token = localStorage . getItem ( 'token' ) ;
36
+ const cartObj = JSON . parse ( localStorage . getItem ( 'cart' ) ) ;
37
+ localStorage . setItem ( 'cart' , JSON . stringify ( { ...cartObj , [ token ] : data . cartItems } ) ) ;
35
38
return data . cartItems ;
36
39
} ,
37
40
} ,
You can’t perform that action at this time.
0 commit comments