Remove electron dependency from browser build by using platform-agnostic dialog types (#982)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: thomasnordquist <7721625+thomasnordquist@users.noreply.github.com>
This commit is contained in:
5
.gitignore
vendored
5
.gitignore
vendored
@@ -20,4 +20,7 @@ test-screenshot-*.png
|
||||
test-expand-*.png
|
||||
browser-debug-screenshot.png
|
||||
|
||||
app/.webpack-cache
|
||||
app/.webpack-cache
|
||||
|
||||
# Temporary files
|
||||
/tmp
|
||||
59
events/DialogTypes.ts
Normal file
59
events/DialogTypes.ts
Normal file
@@ -0,0 +1,59 @@
|
||||
/**
|
||||
* Browser-compatible dialog type definitions
|
||||
* These types mirror Electron's dialog types but don't require the electron package
|
||||
*/
|
||||
|
||||
export interface FileFilter {
|
||||
name: string
|
||||
extensions: string[]
|
||||
}
|
||||
|
||||
export interface OpenDialogOptions {
|
||||
title?: string
|
||||
defaultPath?: string
|
||||
buttonLabel?: string
|
||||
filters?: FileFilter[]
|
||||
properties?: Array<
|
||||
| 'openFile'
|
||||
| 'openDirectory'
|
||||
| 'multiSelections'
|
||||
| 'showHiddenFiles'
|
||||
| 'createDirectory'
|
||||
| 'promptToCreate'
|
||||
| 'noResolveAliases'
|
||||
| 'treatPackageAsDirectory'
|
||||
| 'dontAddToRecent'
|
||||
>
|
||||
message?: string
|
||||
securityScopedBookmarks?: boolean
|
||||
}
|
||||
|
||||
export interface OpenDialogReturnValue {
|
||||
canceled: boolean
|
||||
filePaths: string[]
|
||||
bookmarks?: string[]
|
||||
}
|
||||
|
||||
export interface SaveDialogOptions {
|
||||
title?: string
|
||||
defaultPath?: string
|
||||
buttonLabel?: string
|
||||
filters?: FileFilter[]
|
||||
message?: string
|
||||
nameFieldLabel?: string
|
||||
showsTagField?: boolean
|
||||
properties?: Array<
|
||||
| 'showHiddenFiles'
|
||||
| 'createDirectory'
|
||||
| 'treatPackageAsDirectory'
|
||||
| 'showOverwriteConfirmation'
|
||||
| 'dontAddToRecent'
|
||||
>
|
||||
securityScopedBookmarks?: boolean
|
||||
}
|
||||
|
||||
export interface SaveDialogReturnValue {
|
||||
canceled: boolean
|
||||
filePath?: string
|
||||
bookmark?: string
|
||||
}
|
||||
@@ -62,8 +62,8 @@ export interface CertificateUploadResponse {
|
||||
data: string // base64 encoded
|
||||
}
|
||||
|
||||
// Electron dialog types (re-exported for convenience)
|
||||
import { OpenDialogOptions, OpenDialogReturnValue, SaveDialogOptions, SaveDialogReturnValue } from 'electron'
|
||||
// Dialog types (browser-compatible versions)
|
||||
import type { OpenDialogOptions, OpenDialogReturnValue, SaveDialogOptions, SaveDialogReturnValue } from './DialogTypes'
|
||||
|
||||
export type OpenDialogOptionsV2 = OpenDialogOptions
|
||||
export type OpenDialogReturnValueV2 = OpenDialogReturnValue
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { OpenDialogOptions, OpenDialogReturnValue, SaveDialogOptions, SaveDialogReturnValue } from 'electron'
|
||||
import type { OpenDialogOptions, OpenDialogReturnValue, SaveDialogOptions, SaveDialogReturnValue } from './DialogTypes'
|
||||
import { RpcEvent } from './EventSystem/Rpc'
|
||||
|
||||
// Legacy functions - use RpcEvents from EventsV2.ts for new code
|
||||
|
||||
Reference in New Issue
Block a user