fix: v0.2.4 健壮性与体验打磨 - 读取容错、10MB 大文件防护、横向滚动同步、Esc/外点关闭、二进制预警
This commit is contained in:
+17
-3
@@ -1,18 +1,32 @@
|
||||
import { contextBridge, ipcRenderer } from 'electron'
|
||||
|
||||
/** 打开文件返回的数据结构 */
|
||||
/** 打开文件成功返回的数据结构 */
|
||||
export interface FileData {
|
||||
path: string
|
||||
name: string
|
||||
text: string
|
||||
encoding: string
|
||||
/** 疑似二进制内容(解码启发式判定),渲染端据此提示乱码风险 */
|
||||
binary: boolean
|
||||
}
|
||||
|
||||
/** 打开文件失败的返回结构 */
|
||||
export interface FileOpenError {
|
||||
error: 'too-large' | 'read-failed'
|
||||
/** 文件名(用于提示) */
|
||||
name?: string
|
||||
/** too-large 时的文件字节数 */
|
||||
size?: number
|
||||
}
|
||||
|
||||
/** 打开文件结果:成功数据 / 失败原因 / 用户取消(null) */
|
||||
export type FileOpenResult = FileData | FileOpenError | null
|
||||
|
||||
/** 主进程暴露给渲染进程的安全 API */
|
||||
const api = {
|
||||
openFile: (side?: 'left' | 'right'): Promise<FileData | null> =>
|
||||
openFile: (side?: 'left' | 'right'): Promise<FileOpenResult> =>
|
||||
ipcRenderer.invoke('file:open', side ?? null),
|
||||
decodeBuffer: (buffer: ArrayBuffer): Promise<{ text: string; encoding: string }> =>
|
||||
decodeBuffer: (buffer: ArrayBuffer): Promise<{ text: string; encoding: string; binary: boolean }> =>
|
||||
ipcRenderer.invoke('file:decode-buffer', buffer),
|
||||
saveReport: (content: string, defaultName: string): Promise<{ ok: boolean; path: string | null }> =>
|
||||
ipcRenderer.invoke('file:save-report', content, defaultName),
|
||||
|
||||
Reference in New Issue
Block a user