import { createPinia } from 'pinia'
import persistedState from 'pinia-plugin-persistedstate'
import SecureLS from 'secure-ls'
export const ls = new SecureLS({
  encodingType: 'aes',
  isCompression: false
})
// 创建
const pinia = createPinia()
pinia.use(persistedState)
pinia.use(({ store }) => {
  // 加密状态并存储到 SecureLS 中
  const encryptAndStoreState = () => {
    ls.set(store.$id, store.$state)
  }

  // 解密状态并恢复到 Pinia 中
  const decryptAndRestoreState = () => {
    try {
      const data = ls.get(store.$id)
      if (data) {
        store.$state = data
      }
    } catch (error) {
      console.error('Error decrypting and restoring state:', error)
      // 处理异常情况，比如重新初始化状态或显示错误信息
      store.$reset()
    }
  }

  // 在每次状态变更时调用加密函数
  store.$subscribe(encryptAndStoreState)

  // 在初始化时调用解密函数
  decryptAndRestoreState()
})
// 导出
export default pinia
