import { defineStore, acceptHMRUpdate } from 'pinia' import { authorize } from '../../api/user' import { getToken, setToken, resetToken, setCustomer, getCustomer } from '../../utils/auth' import { Customer } from '../../entity/index' import { ref } from 'vue' export const customerStore = defineStore('customer', () => { const customer = ref({ account: '', token: '', id: '', headerImg: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png', }) const login = async (customer: Customer, token: string) => { try { await authorize({ customerId: customer.customerId, token: token }) setToken(token) setCustomer(customer) } catch { Promise.resolve("authorize error") } } const logout = async () => { customer.value.account = '' customer.value.token = '' customer.value.id = '' resetToken() window.location.reload() } const reflush = async () => { if (getToken()) { const customerStorage = (JSON.parse(getCustomer() as string)) const token = getToken() customer.value.account = customerStorage.account customer.value.token = token customer.value.id = customerStorage.customerId } } return { customer, login, logout, reflush } }) if (import.meta.hot) { import.meta.hot.accept(acceptHMRUpdate(customerStore, import.meta.hot)) }