Skip to content

Commit 6cc27c1

Browse files
authored
Add appVersion and downloadFileSupported to external bus config response (#5797)
1 parent 6d47a12 commit 6cc27c1

File tree

2 files changed

+49
-18
lines changed

2 files changed

+49
-18
lines changed

app/src/main/kotlin/io/homeassistant/companion/android/webview/WebViewActivity.kt

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ import io.homeassistant.companion.android.common.data.keychain.KeyChainRepositor
8484
import io.homeassistant.companion.android.common.data.keychain.NamedKeyChain
8585
import io.homeassistant.companion.android.common.data.prefs.NightModeTheme
8686
import io.homeassistant.companion.android.common.data.servers.ServerManager
87+
import io.homeassistant.companion.android.common.util.AppVersionProvider
8788
import io.homeassistant.companion.android.common.util.DisabledLocationHandler
8889
import io.homeassistant.companion.android.common.util.GestureAction
8990
import io.homeassistant.companion.android.common.util.GestureDirection
@@ -110,6 +111,7 @@ import io.homeassistant.companion.android.util.isStarted
110111
import io.homeassistant.companion.android.websocket.WebsocketManager
111112
import io.homeassistant.companion.android.webview.WebView.ErrorType
112113
import io.homeassistant.companion.android.webview.externalbus.ExternalBusMessage
114+
import io.homeassistant.companion.android.webview.externalbus.ExternalConfigResponse
113115
import io.homeassistant.companion.android.webview.externalbus.NavigateTo
114116
import io.homeassistant.companion.android.webview.externalbus.ShowSidebar
115117
import javax.inject.Inject
@@ -208,6 +210,9 @@ class WebViewActivity :
208210
@NamedKeyChain
209211
lateinit var keyChainRepository: KeyChainRepository
210212

213+
@Inject
214+
lateinit var appVersionProvider: AppVersionProvider
215+
211216
private lateinit var webView: WebView
212217
private lateinit var loadedUrl: String
213218
private lateinit var decor: FrameLayout
@@ -761,25 +766,13 @@ class WebViewActivity :
761766
0
762767
}
763768
sendExternalBusMessage(
764-
ExternalBusMessage(
769+
ExternalConfigResponse(
765770
id = JSONObject(message).get("id"),
766-
type = "result",
767-
success = true,
768-
result = JSONObject(
769-
mapOf(
770-
"hasSettingsScreen" to true,
771-
"canWriteTag" to hasNfc,
772-
"hasExoPlayer" to true,
773-
"canCommissionMatter" to canCommissionMatter,
774-
"canImportThreadCredentials" to canExportThread,
775-
"hasAssist" to true,
776-
"hasBarCodeScanner" to hasBarCodeScanner,
777-
"canSetupImprov" to true,
778-
),
779-
),
780-
callback = {
781-
Timber.d("Callback $it")
782-
},
771+
hasNfc = hasNfc,
772+
canCommissionMatter = canCommissionMatter,
773+
canExportThread = canExportThread,
774+
hasBarCodeScanner = hasBarCodeScanner,
775+
appVersion = appVersionProvider(),
783776
),
784777
)
785778

app/src/main/kotlin/io/homeassistant/companion/android/webview/externalbus/ExternalBusMessage.kt

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
package io.homeassistant.companion.android.webview.externalbus
22

33
import android.webkit.ValueCallback
4+
import io.homeassistant.companion.android.common.util.AppVersion
5+
import org.json.JSONObject
6+
import timber.log.Timber
47

8+
/**
9+
* [External bus documentation](https://developers.home-assistant.io/docs/frontend/external-bus)
10+
*
11+
* [External bus frontend implementation](https://github.com/home-assistant/frontend/blob/dev/src/external_app/external_messaging.ts)
12+
*/
513
open class ExternalBusMessage(
614
val id: Any?,
715
val type: String,
@@ -30,3 +38,33 @@ object ShowSidebar : ExternalBusMessage(
3038
type = "command",
3139
command = "sidebar/show",
3240
)
41+
42+
class ExternalConfigResponse(
43+
id: Any,
44+
hasNfc: Boolean,
45+
canCommissionMatter: Boolean,
46+
canExportThread: Boolean,
47+
hasBarCodeScanner: Int,
48+
appVersion: AppVersion,
49+
) : ExternalBusMessage(
50+
id = id,
51+
type = "result",
52+
success = true,
53+
result = JSONObject(
54+
mapOf(
55+
"hasSettingsScreen" to true,
56+
"canWriteTag" to hasNfc,
57+
"hasExoPlayer" to true,
58+
"canCommissionMatter" to canCommissionMatter,
59+
"canImportThreadCredentials" to canExportThread,
60+
"hasAssist" to true,
61+
"hasBarCodeScanner" to hasBarCodeScanner,
62+
"canSetupImprov" to true,
63+
"downloadFileSupported" to true,
64+
"appVersion" to appVersion.value,
65+
),
66+
),
67+
callback = {
68+
Timber.d("Callback from external config (id=$id): $it")
69+
},
70+
)

0 commit comments

Comments
 (0)