diff --git a/packages/app/src/components/directory-picker.tsx b/packages/app/src/components/directory-picker.tsx index 99d6f065b1..e0ee1cec39 100644 --- a/packages/app/src/components/directory-picker.tsx +++ b/packages/app/src/components/directory-picker.tsx @@ -17,9 +17,7 @@ export function useDirectoryPicker() { return (input: DirectoryPickerInput) => { if (directoryPickerKind(platform.platform, input.server) === "native" && platform.platform === "desktop") { - void platform - .openDirectoryPickerDialog({ title: input.title, multiple: input.multiple }) - .then(input.onSelect) + void platform.openDirectoryPickerDialog({ title: input.title, multiple: input.multiple }).then(input.onSelect) return } diff --git a/packages/app/src/components/prompt-input/files.ts b/packages/app/src/components/prompt-input/files.ts index 899d3bb4af..3c6ad1ff08 100644 --- a/packages/app/src/components/prompt-input/files.ts +++ b/packages/app/src/components/prompt-input/files.ts @@ -2,11 +2,14 @@ import { ACCEPTED_FILE_TYPES, ACCEPTED_IMAGE_TYPES } from "@/constants/file-pick export { ACCEPTED_FILE_TYPES } -type AttachmentPicker = (options: { - defaultPath?: string - multiple?: boolean - accept?: string[] -}, onFile: (file: File) => Promise) => Promise +type AttachmentPicker = ( + options: { + defaultPath?: string + multiple?: boolean + accept?: string[] + }, + onFile: (file: File) => Promise, +) => Promise export function pickAttachmentFiles(input: { picker?: AttachmentPicker diff --git a/packages/app/src/context/platform.tsx b/packages/app/src/context/platform.tsx index 1da038372d..f137c528dc 100644 --- a/packages/app/src/context/platform.tsx +++ b/packages/app/src/context/platform.tsx @@ -50,7 +50,10 @@ type PlatformBase = { notify(title: string, description?: string, href?: string): Promise /** Open a native attachment picker and read selected files sequentially (desktop only) */ - openAttachmentPickerDialog?(opts: OpenAttachmentPickerOptions, onFile: (file: File) => Promise): Promise + openAttachmentPickerDialog?( + opts: OpenAttachmentPickerOptions, + onFile: (file: File) => Promise, + ): Promise /** Open a native save file picker dialog (desktop only) */ saveFilePickerDialog?(opts?: SaveFilePickerOptions): Promise diff --git a/packages/desktop/src/main/attachment-picker.test.ts b/packages/desktop/src/main/attachment-picker.test.ts index 8db5b553e3..f2d5d6b56c 100644 --- a/packages/desktop/src/main/attachment-picker.test.ts +++ b/packages/desktop/src/main/attachment-picker.test.ts @@ -11,7 +11,9 @@ import { describe("assertAttachmentBudget", () => { test("accepts selections within the media ingest limit", () => { - expect(() => assertAttachmentBudget([{ size: MAX_ATTACHMENT_BYTES / 2 }, { size: MAX_ATTACHMENT_BYTES / 2 }])).not.toThrow() + expect(() => + assertAttachmentBudget([{ size: MAX_ATTACHMENT_BYTES / 2 }, { size: MAX_ATTACHMENT_BYTES / 2 }]), + ).not.toThrow() }) test("rejects the selection before files are read when its total exceeds the limit", () => { diff --git a/packages/desktop/src/main/attachment-picker.ts b/packages/desktop/src/main/attachment-picker.ts index ae97465a8b..52584d2c3b 100644 --- a/packages/desktop/src/main/attachment-picker.ts +++ b/packages/desktop/src/main/attachment-picker.ts @@ -17,7 +17,8 @@ export function createPickedFileAuthorizations( }, async read(sender: number, token: string, path: string) { const selection = selections.get(token) - if (selection?.sender !== sender || !selection.paths.delete(path)) throw new Error("File was not selected by the picker") + if (selection?.sender !== sender || !selection.paths.delete(path)) + throw new Error("File was not selected by the picker") const bytes = await read(path, selection.remaining) selection.remaining -= bytes.byteLength if (selection.paths.size === 0) selections.delete(token) @@ -39,7 +40,8 @@ export async function readAttachment(filePath: string, maxBytes = MAX_ATTACHMENT const file = await open(filePath, "r") try { const info = await file.stat() - if (info.size > maxBytes) throw new Error(`Selected attachments exceed the ${MAX_ATTACHMENT_BYTES / 1024 / 1024} MB limit`) + if (info.size > maxBytes) + throw new Error(`Selected attachments exceed the ${MAX_ATTACHMENT_BYTES / 1024 / 1024} MB limit`) const bytes = Buffer.allocUnsafe(info.size) let offset = 0 while (offset < info.size) { diff --git a/packages/desktop/src/main/ipc.ts b/packages/desktop/src/main/ipc.ts index 4ae37059cd..4aaa64d250 100644 --- a/packages/desktop/src/main/ipc.ts +++ b/packages/desktop/src/main/ipc.ts @@ -131,7 +131,11 @@ export function registerIpcHandlers(deps: Deps) { }) if (result.canceled) return null const files = await Promise.all( - result.filePaths.map(async (filePath) => ({ path: filePath, name: basename(filePath), size: (await stat(filePath)).size })), + result.filePaths.map(async (filePath) => ({ + path: filePath, + name: basename(filePath), + size: (await stat(filePath)).size, + })), ) assertAttachmentBudget(files) const token = pickedFiles.add(event.sender.id, result.filePaths)