fix(ui): diagnostic error surfacing on attachment drop

Opening the dropped IStorageFile stream ran outside the try, so a
first-drop failure escaped the async-void handler as an unobserved fault
(generic "An error occurred"). Wrap the stream-open loop and surface the
exception type via DropStatus; include the exception type in the generic
add-file failure too, so the intermittent case is analyzable.
This commit is contained in:
mika kuns
2026-07-24 11:18:06 +02:00
parent ffff1ee183
commit 671c886c75
2 changed files with 20 additions and 5 deletions
@@ -81,14 +81,28 @@ public partial class DetailsIslandView : UserControl
if (items is null) return;
var files = new List<(string FileName, System.IO.Stream Content)>();
foreach (var item in items)
try
{
if (item is IStorageFile sf)
foreach (var item in items)
{
var stream = await sf.OpenReadAsync();
files.Add((sf.Name, stream));
if (item is IStorageFile sf)
{
var stream = await sf.OpenReadAsync();
files.Add((sf.Name, stream));
}
}
}
catch (Exception ex)
{
// Opening the dropped stream can fail (shell IO, file lock) before AddFilesAsync
// ever runs; surface it with the exception type so the next occurrence is analyzable
// instead of vanishing as an unobserved async-void fault.
_vm.DropStatus = string.Format(
ClaudeDo.Ui.Localization.Loc.T("details.attachments.dropReadError"),
$"{ex.GetType().Name}: {ex.Message}");
foreach (var (_, s) in files) await s.DisposeAsync();
return;
}
if (files.Count == 0) return;