Introduce GetWidgetResult to avoid using Pair with generic String.

This commit is contained in:
Benoit Marty
2024-06-11 15:54:02 +02:00
parent e2aa84804d
commit a2db29316c
4 changed files with 21 additions and 10 deletions

View File

@@ -188,13 +188,13 @@ class CallScreenPresenter @AssistedInject constructor(
inputs.url
}
is CallType.RoomCall -> {
val (driver, url) = callWidgetProvider.getWidget(
val result = callWidgetProvider.getWidget(
sessionId = inputs.sessionId,
roomId = inputs.roomId,
clientId = UUID.randomUUID().toString(),
).getOrThrow()
callWidgetDriver.value = driver
url
callWidgetDriver.value = result.driver
result.url
}
}
}

View File

@@ -27,5 +27,10 @@ interface CallWidgetProvider {
clientId: String,
languageTag: String? = null,
theme: String? = null,
): Result<Pair<MatrixWidgetDriver, String>>
): Result<GetWidgetResult>
data class GetWidgetResult(
val driver: MatrixWidgetDriver,
val url: String,
)
}

View File

@@ -24,7 +24,6 @@ import io.element.android.libraries.matrix.api.MatrixClientProvider
import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.core.SessionId
import io.element.android.libraries.matrix.api.widget.CallWidgetSettingsProvider
import io.element.android.libraries.matrix.api.widget.MatrixWidgetDriver
import kotlinx.coroutines.flow.firstOrNull
import javax.inject.Inject
@@ -40,11 +39,14 @@ class DefaultCallWidgetProvider @Inject constructor(
clientId: String,
languageTag: String?,
theme: String?,
): Result<Pair<MatrixWidgetDriver, String>> = runCatching {
): Result<CallWidgetProvider.GetWidgetResult> = runCatching {
val room = matrixClientsProvider.getOrRestore(sessionId).getOrThrow().getRoom(roomId) ?: error("Room not found")
val baseUrl = appPreferencesStore.getCustomElementCallBaseUrlFlow().firstOrNull() ?: ElementCallConfig.DEFAULT_BASE_URL
val widgetSettings = callWidgetSettingsProvider.provide(baseUrl, encrypted = room.isEncrypted)
val callUrl = room.generateWidgetWebViewUrl(widgetSettings, clientId, languageTag, theme).getOrThrow()
room.getWidgetDriver(widgetSettings).getOrThrow() to callUrl
CallWidgetProvider.GetWidgetResult(
driver = room.getWidgetDriver(widgetSettings).getOrThrow(),
url = callUrl
)
}
}

View File

@@ -19,7 +19,6 @@ package io.element.android.features.call.utils
import io.element.android.features.call.impl.utils.CallWidgetProvider
import io.element.android.libraries.matrix.api.core.RoomId
import io.element.android.libraries.matrix.api.core.SessionId
import io.element.android.libraries.matrix.api.widget.MatrixWidgetDriver
import io.element.android.libraries.matrix.test.widget.FakeMatrixWidgetDriver
class FakeCallWidgetProvider(
@@ -35,8 +34,13 @@ class FakeCallWidgetProvider(
clientId: String,
languageTag: String?,
theme: String?
): Result<Pair<MatrixWidgetDriver, String>> {
): Result<CallWidgetProvider.GetWidgetResult> {
getWidgetCalled = true
return Result.success(widgetDriver to url)
return Result.success(
CallWidgetProvider.GetWidgetResult(
driver = widgetDriver,
url = url,
)
)
}
}