Commit e6d9577
committed
fix: decouple snackbar display from caller so busy state always resets
logAndShowError/Warning/Info were suspend functions that called
ui.showSnackbar directly on the caller's coroutine. Toolbox keeps that
coroutine suspended for the entire lifetime of the snackbar and cancels
it (rather than resuming) when the snackbar is dismissed. As a result,
dismissing a snackbar cancelled the calling coroutine and skipped any
code meant to run after the error was shown - most visibly leaving
coderHeaderPage.isBusy stuck at true after a failed URI handling.
Introduce a fire-and-forget CoderToolboxContext.showSnackbar that
launches the snackbar on the plugin scope, swallowing the expected
CancellationException on dismissal. The logAndShow* helpers become
regular (non-suspend) functions delegating to it, so callers continue
immediately and their cleanup always runs.
Also harden the busy-state handling in CoderRemoteProvider.handleUri and
deferredLinkHandler with try/finally so isBusy is reset on every path,
and drop the fragile onConnect.andThen { isBusy = false } chaining.
ErrorReporter now reuses context.showSnackbar instead of its own launch.1 parent 54c1d54 commit e6d9577
3 files changed
Lines changed: 54 additions & 49 deletions
File tree
- src/main/kotlin/com/coder/toolbox
- views
Lines changed: 13 additions & 10 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
360 | 360 | | |
361 | 361 | | |
362 | 362 | | |
363 | | - | |
364 | 363 | | |
365 | | - | |
366 | | - | |
367 | | - | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
368 | 370 | | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
369 | 374 | | |
370 | | - | |
371 | | - | |
372 | 375 | | |
373 | 376 | | |
374 | 377 | | |
| |||
378 | 381 | | |
379 | 382 | | |
380 | 383 | | |
381 | | - | |
382 | | - | |
383 | | - | |
384 | | - | |
| 384 | + | |
385 | 385 | | |
386 | 386 | | |
387 | 387 | | |
| |||
654 | 654 | | |
655 | 655 | | |
656 | 656 | | |
| 657 | + | |
657 | 658 | | |
658 | 659 | | |
659 | 660 | | |
660 | 661 | | |
661 | 662 | | |
662 | 663 | | |
663 | 664 | | |
| 665 | + | |
| 666 | + | |
664 | 667 | | |
665 | 668 | | |
666 | 669 | | |
| |||
Lines changed: 40 additions & 28 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
| 16 | + | |
| 17 | + | |
16 | 18 | | |
| 19 | + | |
17 | 20 | | |
18 | 21 | | |
19 | 22 | | |
| |||
49 | 52 | | |
50 | 53 | | |
51 | 54 | | |
52 | | - | |
| 55 | + | |
53 | 56 | | |
54 | | - | |
55 | | - | |
56 | | - | |
57 | | - | |
58 | | - | |
59 | | - | |
| 57 | + | |
60 | 58 | | |
61 | 59 | | |
62 | | - | |
| 60 | + | |
63 | 61 | | |
64 | | - | |
65 | | - | |
66 | | - | |
67 | | - | |
68 | | - | |
69 | | - | |
| 62 | + | |
70 | 63 | | |
71 | 64 | | |
72 | | - | |
| 65 | + | |
73 | 66 | | |
74 | | - | |
75 | | - | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
| 67 | + | |
80 | 68 | | |
81 | 69 | | |
82 | | - | |
| 70 | + | |
83 | 71 | | |
84 | | - | |
85 | | - | |
86 | | - | |
87 | | - | |
88 | | - | |
89 | | - | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
90 | 102 | | |
91 | 103 | | |
92 | 104 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
8 | | - | |
9 | 7 | | |
10 | 8 | | |
11 | 9 | | |
| |||
47 | 45 | | |
48 | 46 | | |
49 | 47 | | |
50 | | - | |
51 | | - | |
52 | | - | |
53 | | - | |
54 | | - | |
55 | | - | |
56 | | - | |
57 | | - | |
58 | | - | |
| 48 | + | |
59 | 49 | | |
60 | 50 | | |
61 | 51 | | |
| |||
0 commit comments