Call in PiP: add feature flag, disabled in release builds.

This commit is contained in:
Benoit Marty 2024-07-15 16:47:24 +02:00 committed by Benoit Marty
parent fd1916454d
commit b95004fe23
3 changed files with 19 additions and 2 deletions

View file

@ -43,6 +43,7 @@ dependencies {
implementation(projects.libraries.architecture) implementation(projects.libraries.architecture)
implementation(projects.libraries.core) implementation(projects.libraries.core)
implementation(projects.libraries.designsystem) implementation(projects.libraries.designsystem)
implementation(projects.libraries.featureflag.api)
implementation(projects.libraries.matrix.impl) implementation(projects.libraries.matrix.impl)
implementation(projects.libraries.matrixui) implementation(projects.libraries.matrixui)
implementation(projects.libraries.network) implementation(projects.libraries.network)

View file

@ -24,6 +24,9 @@ import com.squareup.anvil.annotations.ContributesBinding
import io.element.android.libraries.core.bool.orFalse import io.element.android.libraries.core.bool.orFalse
import io.element.android.libraries.di.AppScope import io.element.android.libraries.di.AppScope
import io.element.android.libraries.di.ApplicationContext import io.element.android.libraries.di.ApplicationContext
import io.element.android.libraries.featureflag.api.FeatureFlagService
import io.element.android.libraries.featureflag.api.FeatureFlags
import kotlinx.coroutines.runBlocking
import javax.inject.Inject import javax.inject.Inject
interface PipSupportProvider { interface PipSupportProvider {
@ -34,9 +37,15 @@ interface PipSupportProvider {
@ContributesBinding(AppScope::class) @ContributesBinding(AppScope::class)
class DefaultPipSupportProvider @Inject constructor( class DefaultPipSupportProvider @Inject constructor(
@ApplicationContext private val context: Context, @ApplicationContext private val context: Context,
private val featureFlagService: FeatureFlagService,
) : PipSupportProvider { ) : PipSupportProvider {
override fun isPipSupported(): Boolean { override fun isPipSupported(): Boolean {
val hasSystemFeaturePip = context.packageManager?.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE).orFalse() val isSupportedByTheOs = Build.VERSION.SDK_INT >= Build.VERSION_CODES.O &&
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && hasSystemFeaturePip context.packageManager?.hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE).orFalse()
return if (isSupportedByTheOs) {
runBlocking { featureFlagService.isFeatureEnabled(FeatureFlags.PictureInPicture) }
} else {
false
}
} }
} }

View file

@ -113,4 +113,11 @@ enum class FeatureFlags(
defaultValue = { true }, defaultValue = { true },
isFinished = false, isFinished = false,
), ),
PictureInPicture(
key = "feature.pictureInPicture",
title = "Picture in Picture for Calls",
description = "Allow the Call to be rendered in PiP mode",
defaultValue = { it.buildType != BuildType.RELEASE },
isFinished = false,
),
} }