Merge pull request #237 from Hy4ri/fix/issue-201-platforms-response-shape
fix(#201): platforms endpoint response shape mismatch
This commit is contained in:
5 files changed
+33
-6
No files matched your search
@@ -0,0 +1,7 @@
|
||||
package com.m57.hermescontrol.data.model
|
||||
|
||||
data class MessagingPlatformResponse(
|
||||
val env_path: String,
|
||||
val gateway_start_command: String,
|
||||
val platforms: List<MessagingPlatform>,
|
||||
)
|
||||
@@ -16,7 +16,7 @@ import com.m57.hermescontrol.data.model.KanbanTask
|
||||
import com.m57.hermescontrol.data.model.LogResponse
|
||||
import com.m57.hermescontrol.data.model.McpServerToggleRequest
|
||||
import com.m57.hermescontrol.data.model.McpServersResponse
|
||||
import com.m57.hermescontrol.data.model.MessagingPlatform
|
||||
import com.m57.hermescontrol.data.model.MessagingPlatformResponse
|
||||
import com.m57.hermescontrol.data.model.MessagingPlatformUpdate
|
||||
import com.m57.hermescontrol.data.model.ModelOptionsResponse
|
||||
import com.m57.hermescontrol.data.model.PairingApproveRequest
|
||||
@@ -253,7 +253,9 @@ interface HermesApiService {
|
||||
): Response<Unit>
|
||||
|
||||
@GET("api/messaging/platforms")
|
||||
suspend fun getMessagingPlatforms(): Response<List<MessagingPlatform>>
|
||||
suspend fun getMessagingPlatforms(
|
||||
@Query("profile") profile: String? = null,
|
||||
): Response<MessagingPlatformResponse>
|
||||
|
||||
@PUT("api/messaging/platforms/{platform_id}")
|
||||
suspend fun configurePlatform(
|
||||
|
||||
@@ -35,7 +35,7 @@ class ChannelsViewModel : ViewModel() {
|
||||
}
|
||||
when (result) {
|
||||
is NetworkResult.Success -> {
|
||||
_uiState.update { it.copy(isLoading = false, platforms = result.data.orEmpty()) }
|
||||
_uiState.update { it.copy(isLoading = false, platforms = result.data?.platforms.orEmpty()) }
|
||||
}
|
||||
|
||||
is NetworkResult.Failure -> {
|
||||
|
||||
@@ -14,6 +14,7 @@ import com.m57.hermescontrol.data.model.KanbanColumn
|
||||
import com.m57.hermescontrol.data.model.KanbanTask
|
||||
import com.m57.hermescontrol.data.model.LogResponse
|
||||
import com.m57.hermescontrol.data.model.MessagingPlatform
|
||||
import com.m57.hermescontrol.data.model.MessagingPlatformResponse
|
||||
import com.m57.hermescontrol.data.model.ModelOptionsResponse
|
||||
import com.m57.hermescontrol.data.model.ModelProvider
|
||||
import com.m57.hermescontrol.data.model.PluginInfo
|
||||
@@ -895,7 +896,14 @@ class E2eIntegrationTest {
|
||||
fun testChannelsConfiguration_success() =
|
||||
runTest {
|
||||
val platform = MessagingPlatform("telegram", "Telegram", false, false, emptyList())
|
||||
coEvery { mockApiService.getMessagingPlatforms() } returns Response.success(listOf(platform))
|
||||
coEvery { mockApiService.getMessagingPlatforms() } returns
|
||||
Response.success(
|
||||
MessagingPlatformResponse(
|
||||
env_path = "/tmp/.env",
|
||||
gateway_start_command = "hermes gateway start",
|
||||
platforms = listOf(platform),
|
||||
),
|
||||
)
|
||||
coEvery { mockApiService.configurePlatform("telegram", any()) } returns Response.success(Unit)
|
||||
|
||||
val viewModel = ChannelsViewModel()
|
||||
|
||||
@@ -323,10 +323,20 @@ class HermesWsClientTest {
|
||||
serverSocket1?.close(1001, "Server shutting down")
|
||||
|
||||
assertTrue("Client didn't detect disconnect", clientDisconnectedLatch.await(5, TimeUnit.SECONDS))
|
||||
assertEquals(ConnectionStatus.RECONNECTING, HermesWsClient.connectionStatus.value)
|
||||
|
||||
// Poll for status to become RECONNECTING (async race mitigation —
|
||||
// onClosed fires onDisconnected before updating _connectionStatus)
|
||||
var status: ConnectionStatus
|
||||
val deadline = System.currentTimeMillis() + 2000
|
||||
do {
|
||||
status = HermesWsClient.connectionStatus.value
|
||||
if (status == ConnectionStatus.RECONNECTING) break
|
||||
Thread.sleep(50)
|
||||
} while (System.currentTimeMillis() < deadline)
|
||||
assertEquals(ConnectionStatus.RECONNECTING, status)
|
||||
|
||||
// The client should now attempt to reconnect after initial backoff (1000ms)
|
||||
// Wait for the second connection to hit the server
|
||||
assertTrue("Failed to reconnect", connect2Latch.await(5, TimeUnit.SECONDS))
|
||||
assertTrue("Failed to reconnect", connect2Latch.await(6, TimeUnit.SECONDS))
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user