mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2024-12-25 09:10:53 +01:00
Create a factory for JitsiWidgetProperties
This commit is contained in:
parent
80a6823af4
commit
cbabbf5c1e
@ -24,7 +24,6 @@ import dagger.assisted.Assisted
|
||||
import dagger.assisted.AssistedInject
|
||||
import dagger.assisted.AssistedFactory
|
||||
import im.vector.app.core.platform.VectorViewModel
|
||||
import im.vector.app.core.resources.StringProvider
|
||||
import im.vector.app.features.themes.ThemeProvider
|
||||
import org.jitsi.meet.sdk.JitsiMeetUserInfo
|
||||
import org.matrix.android.sdk.api.query.QueryStringValue
|
||||
@ -38,7 +37,7 @@ class JitsiCallViewModel @AssistedInject constructor(
|
||||
@Assisted initialState: JitsiCallViewState,
|
||||
@Assisted val args: VectorJitsiActivity.Args,
|
||||
private val session: Session,
|
||||
private val stringProvider: StringProvider,
|
||||
private val jitsiMeetPropertiesFactory: JitsiWidgetPropertiesFactory,
|
||||
private val themeProvider: ThemeProvider
|
||||
) : VectorViewModel<JitsiCallViewState, JitsiCallViewActions, JitsiCallViewEvents>(initialState) {
|
||||
|
||||
@ -68,7 +67,7 @@ class JitsiCallViewModel @AssistedInject constructor(
|
||||
val jitsiWidget = it.firstOrNull()
|
||||
if (jitsiWidget != null) {
|
||||
val ppt = widgetService.getWidgetComputedUrl(jitsiWidget, themeProvider.isLightTheme())
|
||||
?.let { url -> JitsiWidgetProperties.fromUrl(url, stringProvider) }
|
||||
?.let { url -> jitsiMeetPropertiesFactory.create(url) }
|
||||
setState {
|
||||
copy(
|
||||
widget = Success(jitsiWidget),
|
||||
|
@ -16,35 +16,9 @@
|
||||
|
||||
package im.vector.app.features.call.conference
|
||||
|
||||
import android.net.Uri
|
||||
import im.vector.app.R
|
||||
import im.vector.app.core.resources.StringProvider
|
||||
import org.matrix.android.sdk.api.extensions.tryOrNull
|
||||
import java.net.URLDecoder
|
||||
|
||||
data class JitsiWidgetProperties(
|
||||
val domain: String,
|
||||
val confId: String?,
|
||||
val displayName: String?,
|
||||
val avatarUrl: String?
|
||||
) {
|
||||
companion object {
|
||||
fun fromUrl(url: String, stringProvider: StringProvider): JitsiWidgetProperties {
|
||||
val configString: String? = tryOrNull { Uri.parse(url) }?.fragment
|
||||
|
||||
val configs: Map<String, String?> = configString?.split("&")
|
||||
?.map { it.split("=") }
|
||||
?.filter { it.size == 2 }
|
||||
?.map { (key, value) -> key to URLDecoder.decode(value, "UTF-8") }
|
||||
?.toMap()
|
||||
.orEmpty()
|
||||
|
||||
return JitsiWidgetProperties(
|
||||
domain = configs["conferenceDomain"] ?: stringProvider.getString(R.string.preferred_jitsi_domain),
|
||||
confId = configs["conferenceId"],
|
||||
displayName = configs["displayName"],
|
||||
avatarUrl = configs["avatarUrl"]
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
|
@ -0,0 +1,46 @@
|
||||
/*
|
||||
* Copyright (c) 2021 New Vector Ltd
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package im.vector.app.features.call.conference
|
||||
|
||||
import android.net.Uri
|
||||
import im.vector.app.R
|
||||
import im.vector.app.core.resources.StringProvider
|
||||
import org.matrix.android.sdk.api.extensions.tryOrNull
|
||||
import java.net.URLDecoder
|
||||
import javax.inject.Inject
|
||||
|
||||
class JitsiWidgetPropertiesFactory @Inject constructor(
|
||||
private val stringProvider: StringProvider
|
||||
) {
|
||||
fun create(url: String): JitsiWidgetProperties {
|
||||
val configString = tryOrNull { Uri.parse(url) }?.fragment
|
||||
|
||||
val configs = configString?.split("&")
|
||||
?.map { it.split("=") }
|
||||
?.filter { it.size == 2 }
|
||||
?.map { (key, value) -> key to URLDecoder.decode(value, "UTF-8") }
|
||||
?.toMap()
|
||||
.orEmpty()
|
||||
|
||||
return JitsiWidgetProperties(
|
||||
domain = configs["conferenceDomain"] ?: stringProvider.getString(R.string.preferred_jitsi_domain),
|
||||
confId = configs["conferenceId"],
|
||||
displayName = configs["displayName"],
|
||||
avatarUrl = configs["avatarUrl"]
|
||||
)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user