Newer
Older
navi-1 / webclient / src / composables / useConfirm.js
import { ref, shallowRef } from 'vue'

const visible = ref(false)
const message = shallowRef('')
let _resolve = null

export function useConfirmState() {
  return { visible, message }
}

/**
 * Show a confirm dialog. Returns a Promise<boolean>.
 * true  → user confirmed (YES)
 * false → user cancelled (NO / backdrop)
 */
export function useConfirm() {
  return function confirm(msg) {
    message.value = msg
    visible.value = true
    return new Promise(resolve => {
      _resolve = resolve
    })
  }
}

export function _confirmResolve(result) {
  visible.value = false
  _resolve?.(result)
  _resolve = null
}