Introduce GetWidgetResult to avoid using Pair with generic String.
This commit is contained in:
parent
e2aa84804d
commit
a2db29316c
4 changed files with 21 additions and 10 deletions
|
|
@ -188,13 +188,13 @@ class CallScreenPresenter @AssistedInject constructor(
|
||||||
inputs.url
|
inputs.url
|
||||||
}
|
}
|
||||||
is CallType.RoomCall -> {
|
is CallType.RoomCall -> {
|
||||||
val (driver, url) = callWidgetProvider.getWidget(
|
val result = callWidgetProvider.getWidget(
|
||||||
sessionId = inputs.sessionId,
|
sessionId = inputs.sessionId,
|
||||||
roomId = inputs.roomId,
|
roomId = inputs.roomId,
|
||||||
clientId = UUID.randomUUID().toString(),
|
clientId = UUID.randomUUID().toString(),
|
||||||
).getOrThrow()
|
).getOrThrow()
|
||||||
callWidgetDriver.value = driver
|
callWidgetDriver.value = result.driver
|
||||||
url
|
result.url
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,5 +27,10 @@ interface CallWidgetProvider {
|
||||||
clientId: String,
|
clientId: String,
|
||||||
languageTag: String? = null,
|
languageTag: String? = null,
|
||||||
theme: String? = null,
|
theme: String? = null,
|
||||||
): Result<Pair<MatrixWidgetDriver, String>>
|
): Result<GetWidgetResult>
|
||||||
|
|
||||||
|
data class GetWidgetResult(
|
||||||
|
val driver: MatrixWidgetDriver,
|
||||||
|
val url: String,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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.RoomId
|
||||||
import io.element.android.libraries.matrix.api.core.SessionId
|
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.CallWidgetSettingsProvider
|
||||||
import io.element.android.libraries.matrix.api.widget.MatrixWidgetDriver
|
|
||||||
import kotlinx.coroutines.flow.firstOrNull
|
import kotlinx.coroutines.flow.firstOrNull
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
|
@ -40,11 +39,14 @@ class DefaultCallWidgetProvider @Inject constructor(
|
||||||
clientId: String,
|
clientId: String,
|
||||||
languageTag: String?,
|
languageTag: String?,
|
||||||
theme: 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 room = matrixClientsProvider.getOrRestore(sessionId).getOrThrow().getRoom(roomId) ?: error("Room not found")
|
||||||
val baseUrl = appPreferencesStore.getCustomElementCallBaseUrlFlow().firstOrNull() ?: ElementCallConfig.DEFAULT_BASE_URL
|
val baseUrl = appPreferencesStore.getCustomElementCallBaseUrlFlow().firstOrNull() ?: ElementCallConfig.DEFAULT_BASE_URL
|
||||||
val widgetSettings = callWidgetSettingsProvider.provide(baseUrl, encrypted = room.isEncrypted)
|
val widgetSettings = callWidgetSettingsProvider.provide(baseUrl, encrypted = room.isEncrypted)
|
||||||
val callUrl = room.generateWidgetWebViewUrl(widgetSettings, clientId, languageTag, theme).getOrThrow()
|
val callUrl = room.generateWidgetWebViewUrl(widgetSettings, clientId, languageTag, theme).getOrThrow()
|
||||||
room.getWidgetDriver(widgetSettings).getOrThrow() to callUrl
|
CallWidgetProvider.GetWidgetResult(
|
||||||
|
driver = room.getWidgetDriver(widgetSettings).getOrThrow(),
|
||||||
|
url = callUrl
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,6 @@ package io.element.android.features.call.utils
|
||||||
import io.element.android.features.call.impl.utils.CallWidgetProvider
|
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.RoomId
|
||||||
import io.element.android.libraries.matrix.api.core.SessionId
|
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
|
import io.element.android.libraries.matrix.test.widget.FakeMatrixWidgetDriver
|
||||||
|
|
||||||
class FakeCallWidgetProvider(
|
class FakeCallWidgetProvider(
|
||||||
|
|
@ -35,8 +34,13 @@ class FakeCallWidgetProvider(
|
||||||
clientId: String,
|
clientId: String,
|
||||||
languageTag: String?,
|
languageTag: String?,
|
||||||
theme: String?
|
theme: String?
|
||||||
): Result<Pair<MatrixWidgetDriver, String>> {
|
): Result<CallWidgetProvider.GetWidgetResult> {
|
||||||
getWidgetCalled = true
|
getWidgetCalled = true
|
||||||
return Result.success(widgetDriver to url)
|
return Result.success(
|
||||||
|
CallWidgetProvider.GetWidgetResult(
|
||||||
|
driver = widgetDriver,
|
||||||
|
url = url,
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue