useMessageModal.ts 842 B

12345678910111213141516171819202122232425262728293031323334353637
  1. import { ref } from 'vue'
  2. interface MessageResult {
  3. status: boolean
  4. error?: string
  5. }
  6. const isMessageModalOpen = ref(false)
  7. const isNeedContact = ref(false)
  8. const option = ref(null)
  9. let resolvePromise: ((value: MessageResult) => void) | null = null
  10. export function useMessageModal() {
  11. const openMessageModal = (opt: any): Promise<MessageResult> => {
  12. isMessageModalOpen.value = true
  13. isNeedContact.value = !opt || false
  14. option.value = opt
  15. return new Promise((resolve) => {
  16. resolvePromise = resolve
  17. })
  18. }
  19. const closeMessageModal = (result: MessageResult) => {
  20. isMessageModalOpen.value = false
  21. if (resolvePromise) {
  22. resolvePromise(result)
  23. resolvePromise = null
  24. }
  25. }
  26. return {
  27. isMessageModalOpen,
  28. isNeedContact,
  29. option,
  30. openMessageModal,
  31. closeMessageModal,
  32. }
  33. }