|
Some checks failed
CI / build-and-test (push) Failing after 27s
The operator path: click Enable on a participant -> AsyncRelayCommand fires
ToggleIsoAsync -> IsoController.EnableIsoAsync(id) -> tracker lookup -> throws
InvalidOperationException 'Participant <guid> not currently visible on the
network' when the participant has departed between the click and the engine
resolving the id.
Previously this exception escaped AsyncRelayCommand.Execute via the unawaited
Task in ICommand.Execute, hit System.Threading.Tasks.Task.ThrowAsync, and
ended up in Dispatcher.UnhandledException — which the App.CrashHandlers path
treats as a fatal and fires the crash dialog. Fatal in the log captured
during this morning's session at 08:08:27.
Wrap the EnableIsoAsync / DisableIsoAsync calls in try/catch:
- InvalidOperationException -> toast 'X just left the meeting'; leave
IsEnabled at its current value (engine state of record)
- Exception -> toast 'Couldn't toggle ISO for X: <message>'; same rationale
- finally clause still flips IsProcessing back so the spinner clears
No new tests — the race is hard to trigger deterministically without
introducing a mocking seam on the controller. The behavior change is small
and the surface is the only call site for EnableIso/DisableIso from the
participant row.
|
||
|---|---|---|
| .. | ||
| Assets | ||
| Converters | ||
| Properties | ||
| Services | ||
| Themes | ||
| ViewModels | ||
| Views | ||
| AboutWindow.xaml | ||
| AboutWindow.xaml.cs | ||
| App.Bootstrap.cs | ||
| App.CrashHandlers.cs | ||
| App.UpdateCheckBootstrap.cs | ||
| App.xaml | ||
| App.xaml.cs | ||
| GlobalUsings.cs | ||
| HelpWindow.xaml | ||
| HelpWindow.xaml.cs | ||
| MainWindow.xaml | ||
| MainWindow.xaml.cs | ||
| NotesWindow.xaml | ||
| NotesWindow.xaml.cs | ||
| OnboardingWindow.xaml | ||
| OnboardingWindow.xaml.cs | ||
| PresetsDialog.xaml | ||
| PresetsDialog.xaml.cs | ||
| PreviewWindow.xaml | ||
| PreviewWindow.xaml.cs | ||
| TeamsEmbedWindow.xaml | ||
| TeamsEmbedWindow.xaml.cs | ||
| TeamsISO.App.csproj | ||