diff --git a/app/src/main/java/com/m57/hermescontrol/data/model/SessionListResponse.kt b/app/src/main/java/com/m57/hermescontrol/data/model/SessionListResponse.kt index d73de9cc..24fd6f48 100644 --- a/app/src/main/java/com/m57/hermescontrol/data/model/SessionListResponse.kt +++ b/app/src/main/java/com/m57/hermescontrol/data/model/SessionListResponse.kt @@ -41,6 +41,12 @@ data class BulkDeleteRequest( val delete_all: Boolean = false, ) +@Serializable +data class BulkDeleteResponse( + val ok: Boolean = false, + val deleted: Int = 0, +) + @Serializable data class PruneRequest( val days: Int, diff --git a/app/src/main/java/com/m57/hermescontrol/data/remote/HermesApiService.kt b/app/src/main/java/com/m57/hermescontrol/data/remote/HermesApiService.kt index 2d2a0d29..94c9637e 100644 --- a/app/src/main/java/com/m57/hermescontrol/data/remote/HermesApiService.kt +++ b/app/src/main/java/com/m57/hermescontrol/data/remote/HermesApiService.kt @@ -9,6 +9,7 @@ import com.m57.hermescontrol.data.model.AgentPluginInstallBody import com.m57.hermescontrol.data.model.AnalyticsResponse import com.m57.hermescontrol.data.model.AuxiliaryModelsResponse import com.m57.hermescontrol.data.model.BulkDeleteRequest +import com.m57.hermescontrol.data.model.BulkDeleteResponse import com.m57.hermescontrol.data.model.CheckpointsResponse import com.m57.hermescontrol.data.model.CloneProfileRequest import com.m57.hermescontrol.data.model.ConfigSchemaResponse @@ -156,10 +157,10 @@ interface HermesApiService { @Body body: SessionRenameRequest, ): Response - @POST("api/sessions/delete") + @POST("api/sessions/bulk-delete") suspend fun bulkDeleteSessions( @Body body: BulkDeleteRequest, - ): Response + ): Response @DELETE("api/sessions/{id}") suspend fun deleteSession( diff --git a/app/src/main/java/com/m57/hermescontrol/ui/sessions/SessionsViewModel.kt b/app/src/main/java/com/m57/hermescontrol/ui/sessions/SessionsViewModel.kt index f85b87d8..58ee02cd 100644 --- a/app/src/main/java/com/m57/hermescontrol/ui/sessions/SessionsViewModel.kt +++ b/app/src/main/java/com/m57/hermescontrol/ui/sessions/SessionsViewModel.kt @@ -401,17 +401,23 @@ class SessionsViewModel : ViewModel(), ToastHost { } when (result) { is NetworkResult.Success -> { + val deletedCount = result.data.deleted + val toastMsg = + if (deletedCount > 0) { + "$deletedCount session(s) deleted" + } else { + "No sessions were deleted" + } _uiState.update { it.copy( isDeletingBulk = false, isSelecting = false, selectedIds = emptySet(), - sessions = it.sessions.filter { s -> s.id !in ids }, - searchResults = it.searchResults.filter { it.session_id !in ids }, - total = (it.total - ids.size).coerceAtLeast(0), - toastMessage = "${ids.size} session(s) deleted", + toastMessage = toastMsg, ) } + loadSessions() + loadStats() } is NetworkResult.Failure -> {