From d6dbcb2f4bc812c82b503dc1d9ad1b225e182f77 Mon Sep 17 00:00:00 2001 From: Ayaan Zaidi Date: Fri, 5 Jun 2026 16:51:10 +0530 Subject: [PATCH] fix(android): surface expiring providers in palette --- .../main/java/ai/openclaw/app/ui/CommandPalette.kt | 7 +++---- .../ai/openclaw/app/ui/ProviderModelStatusTest.kt | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/apps/android/app/src/main/java/ai/openclaw/app/ui/CommandPalette.kt b/apps/android/app/src/main/java/ai/openclaw/app/ui/CommandPalette.kt index 16c5ced25467..bf10cc018e62 100644 --- a/apps/android/app/src/main/java/ai/openclaw/app/ui/CommandPalette.kt +++ b/apps/android/app/src/main/java/ai/openclaw/app/ui/CommandPalette.kt @@ -297,17 +297,16 @@ private fun CommandSectionLabel(title: String) { } } -/** Builds provider quick-action metadata from current gateway/catalog state. */ -private fun providerCommandSubtitle( +internal fun providerCommandSubtitle( isConnected: Boolean, providers: List, models: List, ): String { if (!isConnected) return "Connect Gateway to load models" - val readyProviderCount = readyModelProviderCount(providers, models) - if (readyProviderCount > 0) return "$readyProviderCount providers ready" val expiringProviderCount = expiringModelProviderCount(providers) if (expiringProviderCount > 0) return "$expiringProviderCount providers expiring" + val readyProviderCount = readyModelProviderCount(providers, models) + if (readyProviderCount > 0) return "$readyProviderCount providers ready" if (models.isNotEmpty()) return "${models.size} models available" return "Configure model access" } diff --git a/apps/android/app/src/test/java/ai/openclaw/app/ui/ProviderModelStatusTest.kt b/apps/android/app/src/test/java/ai/openclaw/app/ui/ProviderModelStatusTest.kt index 72ab90b2eee0..a41d27155e96 100644 --- a/apps/android/app/src/test/java/ai/openclaw/app/ui/ProviderModelStatusTest.kt +++ b/apps/android/app/src/test/java/ai/openclaw/app/ui/ProviderModelStatusTest.kt @@ -88,6 +88,20 @@ class ProviderModelStatusTest { assertFalse(modelProviderReady("expiring")) } + @Test + fun providerCommandSubtitleSurfacesExpiringBeforeReadyModels() { + val providers = + listOf( + GatewayModelProviderSummary(id = "openai", displayName = "OpenAI", status = "expiring", profileCount = 1), + ) + val models = + listOf( + model(provider = "openai", available = true), + ) + + assertEquals("1 providers expiring", providerCommandSubtitle(isConnected = true, providers = providers, models = models)) + } + @Test fun readyModelProviderCountDoesNotTreatUnavailableModelsAsReadyWhenAuthProviderNeedsSetup() { val providers =