Nnextop / app

useDialog

Native open/save dialogs (dialog.showOpenDialog / showSaveDialog). Picked paths are just strings — reading/writing them still goes through useFs's own security mode (fs.mode / fs.allowedRoots), so this hook doesn't need a security mode of its own.

const { showOpenDialog, showSaveDialog } = useDialog()
MemberTypeNotes
showOpenDialog(options?: NextopOpenDialogOptions) => Promise<string[] | null>null if the user cancels.
showSaveDialog(options?: NextopSaveDialogOptions) => Promise<string | null>null if user cancels.
type NextopDialogFilter = { name: string; extensions: string[] }
type NextopOpenDialogOptions = {
title?: string
defaultPath?: string
filters?: NextopDialogFilter[]
properties?: Array<'openFile' | 'openDirectory' | 'multiSelections' | 'showHiddenFiles'
| 'createDirectory' | 'promptToCreate' | 'noResolveAliases'
| 'treatPackageAsDirectory' | 'dontAddToRecent'>
}
type NextopSaveDialogOptions = { title?: string; defaultPath?: string; filters?: NextopDialogFilter[] }
import { useDialog, useFs } from 'nextop-app'
const { showOpenDialog } = useDialog()
const { writeFile } = useFs()
const files = await showOpenDialog({ filters: [{ name: 'Images', extensions: ['png', 'jpg'] }] })
if (files) await writeFile(files[0], '...')