Browse Source

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

pull/3199/head
Benoit Marty 2 months ago committed by Benoit Marty
parent
commit
d27e86f396
  1. 1
      features/call/impl/build.gradle.kts
  2. 13
      features/call/impl/src/main/kotlin/io/element/android/features/call/impl/pip/PipSupportProvider.kt
  3. 7
      libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt

1
features/call/impl/build.gradle.kts

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

13
features/call/impl/src/main/kotlin/io/element/android/features/call/impl/pip/PipSupportProvider.kt

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

7
libraries/featureflag/api/src/main/kotlin/io/element/android/libraries/featureflag/api/FeatureFlags.kt

@ -113,4 +113,11 @@ enum class FeatureFlags( @@ -113,4 +113,11 @@ enum class FeatureFlags(
defaultValue = { true },
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,
),
}

Loading…
Cancel
Save