单例弹窗

27 阅读1分钟
import { defineStore } from 'pinia'

const service = useService()

let _instance: Promise<any> | null = null
export const useDialogStore = defineStore('dialog', () => {
  const dialogImg = ref<undefined | string>('')

  async function _getDialogImg() {
    return new Promise(async (resolve, reject) => {
      try {
        const res = await service.app.getDialogImg()
        dialogImg.value = res || ''
        resolve(res)
      }
      catch (e) {
        _instance = null
        reject(e)
      }
    })
  }

  return {
    reset: () => {
      _instance = null
    },
    getDialogImg: () => {
      if (!_instance) {
        _instance = _getDialogImg()
      }
      return _instance
    },
    dialogImg,
  }
})