diff --git a/app/src/main/java/com/m57/hermescontrol/data/model/PluginInfo.kt b/app/src/main/java/com/m57/hermescontrol/data/model/PluginInfo.kt index b8a4f33c..9d99f016 100644 --- a/app/src/main/java/com/m57/hermescontrol/data/model/PluginInfo.kt +++ b/app/src/main/java/com/m57/hermescontrol/data/model/PluginInfo.kt @@ -1,11 +1,31 @@ package com.m57.hermescontrol.data.model +import com.google.gson.annotations.SerializedName + data class PluginInfo( val name: String, val description: String?, val version: String?, - val enabled: Boolean, - val installed: Boolean = true, + val source: String?, + @SerializedName("runtime_status") val runtimeStatus: String?, + @SerializedName("has_dashboard_manifest") val hasDashboardManifest: Boolean = false, + @SerializedName("can_remove") val canRemove: Boolean = false, + @SerializedName("can_update_git") val canUpdateGit: Boolean = false, + @SerializedName("auth_required") val authRequired: Boolean = false, + @SerializedName("auth_command") val authCommand: String? = null, + @SerializedName("user_hidden") val userHidden: Boolean = false, +) { + val enabled: Boolean + get() = runtimeStatus.equals("enabled", ignoreCase = true) + + val installed: Boolean + get() = + runtimeStatus.equals("enabled", ignoreCase = true) || + runtimeStatus.equals("disabled", ignoreCase = true) +} + +data class PluginsHubResponse( + val plugins: List, ) data class TogglePluginRequest( 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 f9cb947b..c7c4c0ee 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 @@ -22,7 +22,7 @@ import com.m57.hermescontrol.data.model.ModelOptionsResponse import com.m57.hermescontrol.data.model.PairingApproveRequest import com.m57.hermescontrol.data.model.PairingResponse import com.m57.hermescontrol.data.model.PairingRevokeRequest -import com.m57.hermescontrol.data.model.PluginInfo +import com.m57.hermescontrol.data.model.PluginsHubResponse import com.m57.hermescontrol.data.model.ProfileSoulResponse import com.m57.hermescontrol.data.model.ProfilesResponse import com.m57.hermescontrol.data.model.RawConfigResponse @@ -212,8 +212,8 @@ interface HermesApiService { @GET("api/logs") suspend fun getLogs(): Response - @GET("api/dashboard/plugins") - suspend fun getPlugins(): Response> + @GET("api/dashboard/plugins/hub") + suspend fun getPlugins(): Response @POST("api/dashboard/agent-plugins/install") suspend fun installPlugin( @@ -222,22 +222,22 @@ interface HermesApiService { @DELETE("api/dashboard/agent-plugins/{name}") suspend fun uninstallPlugin( - @Path("name") name: String, + @Path("name", encoded = true) name: String, ): Response @POST("api/dashboard/agent-plugins/{name}/update") suspend fun updatePlugin( - @Path("name") name: String, + @Path("name", encoded = true) name: String, ): Response @POST("api/dashboard/agent-plugins/{name}/enable") suspend fun enablePlugin( - @Path("name") name: String, + @Path("name", encoded = true) name: String, ): Response @POST("api/dashboard/agent-plugins/{name}/disable") suspend fun disablePlugin( - @Path("name") name: String, + @Path("name", encoded = true) name: String, ): Response @GET("api/messaging/platforms") diff --git a/app/src/main/java/com/m57/hermescontrol/ui/plugins/PluginsViewModel.kt b/app/src/main/java/com/m57/hermescontrol/ui/plugins/PluginsViewModel.kt index 0231259f..84dd5e57 100644 --- a/app/src/main/java/com/m57/hermescontrol/ui/plugins/PluginsViewModel.kt +++ b/app/src/main/java/com/m57/hermescontrol/ui/plugins/PluginsViewModel.kt @@ -32,7 +32,8 @@ class PluginsViewModel : ViewModel() { ApiClient.hermesApi.getPlugins() } if (response.isSuccessful) { - _uiState.update { it.copy(isLoading = false, plugins = response.body().orEmpty()) } + val plugins = response.body()?.plugins.orEmpty() + _uiState.update { it.copy(isLoading = false, plugins = plugins) } } else { _uiState.update { it.copy(