Skip to content

Commit e13e4b7

Browse files
committed
Trigger login and cart matching for new customer token for any reason
1 parent ed23d45 commit e13e4b7

File tree

2 files changed

+17
-10
lines changed

2 files changed

+17
-10
lines changed

resources/js/stores/useCart.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { StorageSerializers, asyncComputed, useLocalStorage, useMemoize } from '@vueuse/core'
2-
import { computed, ref, watch } from 'vue'
2+
import { computed, watch } from 'vue'
33
import { GraphQLError } from '../fetch'
44
import { mask, clearMask } from './useMask'
55
import { user } from './useUser'
@@ -284,4 +284,14 @@ if (cartStorage.value?.id && !mask.value) {
284284
clear()
285285
}
286286

287+
document.addEventListener('vue:loaded', function (event) {
288+
event.detail.vue.$on('logged-in', async () => {
289+
if (mask.value) {
290+
linkUserToCart()
291+
} else {
292+
fetchCustomerCart()
293+
}
294+
})
295+
})
296+
287297
export default () => cart

resources/js/stores/useUser.js

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { useLocalStorage, useSessionStorage, StorageSerializers } from '@vueuse/core'
22
import { useCookies } from '@vueuse/integrations/useCookies'
3-
import { clear as clearCart, fetchCustomerCart, linkUserToCart, cart } from './useCart'
3+
import { clear as clearCart, cart } from './useCart'
44
import { clear as clearOrder } from './useOrder'
55
import { computed, watch } from 'vue'
66
import Jwt from '../jwt'
@@ -61,7 +61,11 @@ export const refresh = async function () {
6161

6262
return (currentRefresh = (async function () {
6363
try {
64+
const isNewLogin = !userStorage.value?.email;
6465
userStorage.value = (await magentoGraphQL(`{ customer { ${config.queries.customer} } }`))?.data?.customer
66+
if (isNewLogin) {
67+
window.app.$emit('logged-in')
68+
}
6569
} catch (error) {
6670
if (error instanceof SessionExpired) {
6771
await clear()
@@ -141,14 +145,7 @@ export const login = async function (email, password) {
141145

142146
export const loginByToken = async function (customerToken) {
143147
token.value = customerToken
144-
145-
if (mask.value) {
146-
await linkUserToCart()
147-
} else {
148-
await fetchCustomerCart()
149-
}
150-
151-
window.app.$emit('logged-in')
148+
await refresh()
152149
}
153150

154151
export const logout = async function () {

0 commit comments

Comments
 (0)