fix: tab reloads actually reload — kanban switch spam, plugins/skills refresh, ws mint (#897)
- ws: ticket-mint response body was read on the calling (main) thread —
the socket read threw NetworkOnMainThreadException, the mint failed,
and the kanban events stream never connected (board stuck Offline).
execute() + body read now run entirely on Dispatchers.IO; same fix in
DashboardSessionTokenRefresher.fetch (loopback mint path).
- kanban: re-selecting the already-active board reloads data and
reconnects events WITHOUT the redundant POST /boards/{id}/switch that
refresh fired on every tap.
- plugins: top-bar Refresh + pull-to-refresh wired through HermesScaffold
(previously no reload control at all).
- skills: Refresh icon now does a plain GET reload; the heavy hub-update
POST moved to the cloud icon so refresh is no longer disguised as update.
- test: mock the 3-arg Log.w overload (catch now logs the full stack).
Co-authored-by: M57 <hy4ri@users.noreply.github.com>
This commit is contained in:
1 parent
9c7bb8635f
commit
90c1e8dc5f
6 files changed
+131
-106
No files matched your search
@@ -121,6 +121,15 @@ class KanbanViewModel(
|
||||
}
|
||||
|
||||
fun selectBoard(board: KanbanBoard) {
|
||||
val current = _uiState.value.selectedBoard
|
||||
if (current?.id == board.id) {
|
||||
// Already-active board: reload its data and (re)connect the events
|
||||
// stream WITHOUT the /switch round-trip — refresh and createTask
|
||||
// re-select the same board and must not POST a redundant switch.
|
||||
viewModelScope.launch { loadBoardIntoState(board) }
|
||||
connectEvents(board)
|
||||
return
|
||||
}
|
||||
_uiState.update { it.copy(selectedBoard = board, isLoading = true, errorMessage = null) }
|
||||
viewModelScope.launch {
|
||||
val switchResult =
|
||||
|
||||
Reference in new issue
Block a user