File size: 745 Bytes
8ede856
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import { inject } from 'vue'

export type ConfirmDialogOptions = {
  title?: string
  message?: string
}

export type ConfirmDialogHandler = (options: ConfirmDialogOptions) => Promise<boolean>

export type ConfirmDialogCandidate = ConfirmDialogHandler | null | undefined

export function useConfirmDialog(): ConfirmDialogHandler | undefined {
  return inject<ConfirmDialogHandler | undefined>('$confirm', undefined)
}

export async function askForConfirmation(
  message: string,
  candidate?: ConfirmDialogCandidate
): Promise<boolean> {
  const confirmDialog = candidate ?? undefined

  if (confirmDialog) {
    try {
      return await confirmDialog({ message })
    } catch {
      return false
    }
  }

  return window.confirm(message)
}