tui: warn about attachment limits immediately instead of batch processing

opencode/sunny-comet
Shoubhit Dash 2026-03-23 13:00:49 +05:30
parent 3c8b069bba
commit 32ba9287b6
1 changed files with 8 additions and 7 deletions

View File

@ -34,6 +34,8 @@ type PromptAttachmentsInput = {
readClipboardImage?: () => Promise<File | null>
}
type AddState = "added" | "failed" | "unsupported" | "limit"
export function createPromptAttachments(input: PromptAttachmentsInput) {
const prompt = usePrompt()
const language = useLanguage()
@ -52,7 +54,7 @@ export function createPromptAttachments(input: PromptAttachmentsInput) {
})
}
const add = async (file: File) => {
const add = async (file: File): Promise<AddState> => {
const mime = await attachmentMime(file)
if (!mime) {
return "unsupported" as const
@ -80,17 +82,16 @@ export function createPromptAttachments(input: PromptAttachmentsInput) {
}
const addAttachments = async (list: File[]) => {
const result = { added: false, limit: false, unsupported: false }
const result = { added: false, unsupported: false }
for (const file of list) {
const state = await add(file)
result.added = result.added || state === "added"
result.limit = result.limit || state === "limit"
result.unsupported = result.unsupported || state === "unsupported"
}
if (result.limit) {
if (state === "limit") {
warnLimit()
return result.added
}
result.added = result.added || state === "added"
result.unsupported = result.unsupported || state === "unsupported"
}
if (!result.added && result.unsupported) warn()
return result.added
}