Update error toast when user tries to drop open file into chat window
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 84/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- javascript
- Ambito
- frontend
Direzione di ricerca
Apri application/single_app/static/js/chat/chat-input-actions.js e segui il percorso di caricamento tramite trascinamento, in particolare uploadFileToConversation e la relativa gestione degli errori. Confrontalo con il comportamento di caricamento tramite graffetta, quindi verifica che il rilascio di un file illeggibile o bloccato esternamente mostri un toast specifico e utilizzabile, mentre i caricamenti normali continuino a completarsi correttamente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
When a user tries to drop a file that's open in another app into the chat window, a vague error toast pops up in the upper right that doesn't provide enough information.
Trying to upload the same file via the paperclip icon provides much more helpful error:
Suggested fix - make changes similar to the below to application/single_app/static/js/chat/chat-input-actions.js to give the user a clearer message about what went wrong.)
More helpful error message:
New async function
const fileName = String(file?.name || "selected file").trim() || "selected file";
try {
await file.slice(0, Math.min(file.size, 1)).arrayBuffer();
} catch (error) {
throw new Error(
`The browser could not read "${fileName}". Close the file in other apps then try again.`
);
}
}
Updated uploadFileToConversation function:
export async function uploadFileToConversation(file) {
let uploadingIndicatorEl = null;
try {
await ensureUploadFileIsReadable(file);
const groupUploadContext = await resolveGroupUploadContext();
uploadingIndicatorEl = showFileUploadingMessage();
// Update the file button to show "Uploading..." state
const fileBtn = document.getElementById("choose-file-btn");
if (fileBtn) {
const fileBtnText = fileBtn.querySelector(".file-btn-text");
if (fileBtnText) {
fileBtnText.textContent = "Uploading...";
}
}
const formData = new FormData();
formData.append("file", file);
formData.append("conversation_id", currentConversationId);
if (groupUploadContext) {
formData.append("group_upload_target_id", groupUploadContext.selectedGroupId);
groupUploadContext.groupIds.forEach((groupId) => {
formData.append("upload_scope_group_ids", groupId);
});
}
let response;
try {
response = await fetch("/upload", {
method: "POST",
body: formData,
});
} catch (error) {
if (error instanceof TypeError) {
const fileName = String(file?.name || "selected file").trim() || "selected file";
throw new Error(
`The browser could not upload "${fileName}". The file may be open in another app, unavailable from cloud storage, or the network connection may have been interrupted. Ensure the file is closed and then try again.`
);
}
throw error;
}
hideFileUploadingMessage(uploadingIndicatorEl);
uploadingIndicatorEl = null;
const data = await response.json();
if (!response.ok) {
console.error("Upload failed:", data.error || "Unknown error");
throw new Error(data.error || "Upload failed");
}
if (data.conversation_id) {
const uploadedConversationId = data.conversation_id;
currentConversationId = uploadedConversationId;
window.currentConversationId = uploadedConversationId;
// If a title was returned and it's different from "New Conversation",
// update the conversation title in the UI
if (data.title && data.title !== "New Conversation") {
const currentConversationTitleEl = document.getElementById("current-conversation-title");
if (currentConversationTitleEl) {
currentConversationTitleEl.textContent = data.title;
}
}
const isCollaborationUpload = Boolean(
data.is_collaboration_upload
|| window.chatCollaboration?.isCollaborationConversation?.(uploadedConversationId)
);
const loadMessagesPromise = isCollaborationUpload && window.chatCollaboration?.activateConversation
? window.chatCollaboration.activateConversation(uploadedConversationId)
: loadMessages(uploadedConversationId);
if (data.workspace_document_id) {
registerConversationTaskDocument({
...(data.workspace_document || {}),
id: data.workspace_document_id,
conversation_id: uploadedConversationId,
scope: data.workspace_scope,
status: data.workspace_document?.status || 'Queued for processing',
percentage_complete: data.workspace_document?.percentage_complete || 0,
ready: false,
});
activateUserWorkspaceContextForChatUpload();
Promise.resolve(loadMessagesPromise).finally(() => {
watchChatWorkspaceUploadDocument(data.workspace_document_id, {
autoSelect: true,
workspaceScope: data.workspace_scope,
groupId: data.workspace_document?.group_id || data.group_upload_target?.id || null,
});
});
}
loadConversations();
} else {
console.error("No conversation_id returned from server.");
showToast("Error: No conversation ID returned from server.", "danger");
}
resetFileButton();
} catch (error) {
console.error("Error:", error);
if (!error.isUploadSelectionCancelled) {
showToast("Error uploading file: " + error.message, "danger");
}
resetFileButton();
if (uploadingIndicatorEl) {
hideFileUploadingMessage(uploadingIndicatorEl);
}
}
}
- Lingua principale
- Python
- Stelle
- 157
- Fork
- 117
- Merge medio
- 4h 19m
- PR unite (30g)
- 200
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di microsoft/simplechat
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
microsoft/simplechat#1370 ·
I maintainer di solito rispondono entro 1 giorno
-
V2: triage multi-turn UI failures and make saved-memory orchestration validation reliableForse già presa @paullizer l’ha presa oggi. Apertabug P1
microsoft/simplechat#1785 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Hyphenated action names fail Semantic Kernel loading silently; add permission-aware recovery in both chat UIsForse già presa @paullizer l’ha presa 1 giorno fa. Apertabug enhancement P1
microsoft/simplechat#1781 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
V2 workspace documents: fix public source discovery and verify metadata-analysis parity across scopesForse già presa @paullizer l’ha presa 1 giorno fa. Apertabug P1
microsoft/simplechat#1778 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Chat-linked workspace documents use conversation IDs as source scope, breaking Analyze and CompareAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 22/100
microsoft/simplechat#1777 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di microsoft/simplechat
Issue simili
-
wr.dynamodb.read_items returns [{}] for a single partition value that does not existForse già presa @auraseb l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
aws/aws-sdk-pandas#3520 ·
I maintainer di solito rispondono entro 2 giorni
-
requires triage typing
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
sqlalchemy/sqlalchemy#13704 ·
I maintainer di solito rispondono entro 1 giorno
-
Edit tool converts CRLF files to LFForse già presa @RaphaelFakhri l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
huggingface/tau#774 ·
I maintainer di solito rispondono entro 1 giorno
-
show ignores the row limit when a column or table name contains "limit"Forse già presa @RaphaelFakhri l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
What happened to `check.py`?Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
linebender/resvg#1179 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni