Files
speckle-server/packages/frontend-2/lib/common/composables/externalLinkDialog.ts
T
2025-07-21 16:11:37 +01:00

30 lines
760 B
TypeScript

type ExternalLinkState = {
open: boolean
url: string
_resolver?: (accepted: boolean) => void
}
const useSharedExternalLinkState = () =>
useState<ExternalLinkState>('global_external_link', () => ({
open: false,
url: ''
}))
export const useExternalLinkDialogController = () => {
const state = useSharedExternalLinkState()
const confirm = (url: string) =>
new Promise<boolean>((resolve) => {
state.value = { open: true, url, _resolver: resolve }
})
return { confirm }
}
export const useExternalLinkDialogState = () => {
const state = useSharedExternalLinkState()
const close = (accepted: boolean) => {
state.value.open = false
state.value._resolver?.(accepted)
}
return { state: readonly(state), close }
}