From ab35235bae9c4a6161b2fb9fc810fc9d9a4229d5 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 20 Oct 2025 09:35:12 +0200 Subject: [PATCH] Avoid creating a Json instance many times. --- .../features/call/impl/utils/WebViewAudioManager.kt | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/WebViewAudioManager.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/WebViewAudioManager.kt index 7745cda13b..313a758fb0 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/WebViewAudioManager.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/utils/WebViewAudioManager.kt @@ -44,6 +44,13 @@ class WebViewAudioManager( private val coroutineScope: CoroutineScope, private val onInvalidAudioDeviceAdded: (InvalidAudioDeviceReason) -> Unit, ) { + private val json by lazy { + Json { + encodeDefaults = true + explicitNulls = false + } + } + /** * Whether to disable bluetooth audio devices. This must be done on Android versions lower than Android 12, * since the WebView approach breaks when using the legacy Bluetooth audio APIs. @@ -308,11 +315,7 @@ class WebViewAudioManager( devices: List = listAudioDevices().map(SerializableAudioDevice::fromAudioDeviceInfo), ) { Timber.d("Updating available audio devices") - val jsonSerializer = Json { - encodeDefaults = true - explicitNulls = false - } - val deviceList = jsonSerializer.encodeToString(devices) + val deviceList = json.encodeToString(devices) webView.evaluateJavascript("controls.setAvailableOutputDevices($deviceList);", { Timber.d("Audio: setAvailableOutputDevices result: $it") })