adjust attachments to hopefully fix them?
This commit is contained in:
@@ -59,6 +59,8 @@ export function createAttachmentComposer({onChange, onError}) {
|
||||
onChange();
|
||||
};
|
||||
const upload = async item => {
|
||||
if (item.uploading || item.metadata || !items.includes(item)) return;
|
||||
item.uploading = true;
|
||||
item.error = null;
|
||||
item.controller = new AbortController();
|
||||
render();
|
||||
@@ -72,6 +74,8 @@ export function createAttachmentComposer({onChange, onError}) {
|
||||
} catch (error) {
|
||||
if (error.name !== "AbortError") item.error = error.message || "Upload failed";
|
||||
}
|
||||
item.uploading = false;
|
||||
item.controller = null;
|
||||
render();
|
||||
};
|
||||
const add = files => {
|
||||
@@ -101,6 +105,15 @@ export function createAttachmentComposer({onChange, onError}) {
|
||||
get attachments() { return items.filter(v => v.metadata).map(v => v.metadata); },
|
||||
get pending() { return items.some(v => !v.metadata); },
|
||||
setBusy(value) { busy = value; button.disabled = value; picker.disabled = value; render(); },
|
||||
clear() { items.forEach(v => URL.revokeObjectURL(v.preview)); items = []; render(); }
|
||||
clear() { items.forEach(v => URL.revokeObjectURL(v.preview)); items = []; render(); },
|
||||
discard() {
|
||||
for (const item of items) {
|
||||
item.controller?.abort();
|
||||
URL.revokeObjectURL(item.preview);
|
||||
if (item.metadata) void fetch(`/attachments/${item.metadata.id}`, {method: "DELETE"});
|
||||
}
|
||||
items = [];
|
||||
render();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
+8
-5
@@ -1,7 +1,7 @@
|
||||
import { del, get, post, put, stream } from "./api.js?v=20260909-account-controls";
|
||||
import { regenerateInline } from "./regeneration.js";
|
||||
import { appendSources, createWebSearchToggle } from "./webSearch.js";
|
||||
import { appendAttachments, createAttachmentComposer } from "./attachments.js";
|
||||
import { appendAttachments, createAttachmentComposer } from "./attachments.js?v=20260923-vision-provenance";
|
||||
import { createReasoningToggle, finishReasoning, updateReasoning } from "./reasoning.js?v=20260921-reasoning-capability";
|
||||
import { closeChatDrawer, openChatDrawer } from "./chatDrawer.js?v=20260909-account-controls";
|
||||
import { onboardingPrompts, requestedChatId } from "./constants.js?v=20260909-account-controls";
|
||||
@@ -1427,7 +1427,8 @@ async function stopGeneration() {
|
||||
setNotice(res.stopped ? "Stopping generation..." : "Generation already finished.");
|
||||
}
|
||||
|
||||
async function setActiveChat(id) {
|
||||
async function setActiveChat(id, {preserveComposer = false} = {}) {
|
||||
if (!preserveComposer && id !== activeChatId) attachmentComposer.discard();
|
||||
if (isMobileLayout()) closeMobileSidebar();
|
||||
setChatLoading(true, "Opening chat...");
|
||||
setChatActivity(true, {
|
||||
@@ -1479,7 +1480,8 @@ async function loadChatSessions() {
|
||||
return setNotice("Pick a starting action to begin.", "success");
|
||||
}
|
||||
|
||||
async function createNewChat() {
|
||||
async function createNewChat({preserveComposer = false} = {}) {
|
||||
if (!preserveComposer) attachmentComposer.discard();
|
||||
setChatLoading(true, "Creating chat...");
|
||||
setChatActivity(true, {
|
||||
eyebrow: "Creating chat",
|
||||
@@ -1492,7 +1494,7 @@ async function createNewChat() {
|
||||
setChatActivity(false);
|
||||
return setNotice(res.error || "Unable to create chat.", "error");
|
||||
}
|
||||
chatSessions.unshift(res.chat); await loadSummary(); renderChatList(); await setActiveChat(res.chat.id); setNotice("New chat created.", "success");
|
||||
chatSessions.unshift(res.chat); await loadSummary(); renderChatList(); await setActiveChat(res.chat.id, {preserveComposer}); setNotice("New chat created.", "success");
|
||||
msgInput.focus();
|
||||
setChatLoading(false);
|
||||
setChatActivity(false);
|
||||
@@ -1855,7 +1857,8 @@ async function sendMessage() {
|
||||
if (!message) return;
|
||||
const webSearch = webSearchToggle.enabled;
|
||||
const reasoning = reasoningToggle.enabled;
|
||||
if (!activeChatId) await createNewChat();
|
||||
if (!activeChatId) await createNewChat({preserveComposer: true});
|
||||
if (!activeChatId) return;
|
||||
const currentChat = getChatById(activeChatId);
|
||||
if (currentChat && !currentChat.assistant_persona_id && currentChat.title === "New chat") {
|
||||
const autoTitle = message.length > 40 ? `${message.slice(0, 40)}...` : message;
|
||||
|
||||
Reference in New Issue
Block a user