@stream-io/video-react-native-sdk 1.8.0 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/android/src/main/java/com/streamvideo/reactnative/StreamVideoReactNative.kt +23 -11
- package/android/src/main/java/com/streamvideo/reactnative/StreamVideoReactNativeModule.kt +71 -23
- package/dist/commonjs/components/Call/CallContent/CallContent.js +1 -1
- package/dist/commonjs/components/Call/CallContent/CallContent.js.map +1 -1
- package/dist/commonjs/components/Call/CallLayout/CallParticipantsGrid.js +2 -3
- package/dist/commonjs/components/Call/CallLayout/CallParticipantsGrid.js.map +1 -1
- package/dist/commonjs/components/Call/CallLayout/CallParticipantsSpotlight.js +2 -3
- package/dist/commonjs/components/Call/CallLayout/CallParticipantsSpotlight.js.map +1 -1
- package/dist/commonjs/hooks/useAutoEnterPiPEffect.js +5 -3
- package/dist/commonjs/hooks/useAutoEnterPiPEffect.js.map +1 -1
- package/dist/commonjs/hooks/useIsInPiPMode.js +14 -24
- package/dist/commonjs/hooks/useIsInPiPMode.js.map +1 -1
- package/dist/commonjs/providers/StreamCall/AppStateListener.js +101 -0
- package/dist/commonjs/providers/StreamCall/AppStateListener.js.map +1 -0
- package/dist/commonjs/providers/StreamCall/DeviceStats.js +45 -0
- package/dist/commonjs/providers/StreamCall/DeviceStats.js.map +1 -0
- package/dist/commonjs/providers/StreamCall/index.js +69 -0
- package/dist/commonjs/providers/StreamCall/index.js.map +1 -0
- package/dist/commonjs/utils/internal/rxSubjects.js +10 -0
- package/dist/commonjs/utils/internal/rxSubjects.js.map +1 -0
- package/dist/commonjs/version.js +1 -1
- package/dist/module/components/Call/CallContent/CallContent.js +1 -1
- package/dist/module/components/Call/CallContent/CallContent.js.map +1 -1
- package/dist/module/components/Call/CallLayout/CallParticipantsGrid.js +2 -3
- package/dist/module/components/Call/CallLayout/CallParticipantsGrid.js.map +1 -1
- package/dist/module/components/Call/CallLayout/CallParticipantsSpotlight.js +2 -3
- package/dist/module/components/Call/CallLayout/CallParticipantsSpotlight.js.map +1 -1
- package/dist/module/hooks/useAutoEnterPiPEffect.js +5 -3
- package/dist/module/hooks/useAutoEnterPiPEffect.js.map +1 -1
- package/dist/module/hooks/useIsInPiPMode.js +14 -24
- package/dist/module/hooks/useIsInPiPMode.js.map +1 -1
- package/dist/module/providers/StreamCall/AppStateListener.js +94 -0
- package/dist/module/providers/StreamCall/AppStateListener.js.map +1 -0
- package/dist/module/providers/StreamCall/DeviceStats.js +38 -0
- package/dist/module/providers/StreamCall/DeviceStats.js.map +1 -0
- package/dist/module/providers/StreamCall/index.js +61 -0
- package/dist/module/providers/StreamCall/index.js.map +1 -0
- package/dist/module/utils/internal/rxSubjects.js +4 -0
- package/dist/module/utils/internal/rxSubjects.js.map +1 -0
- package/dist/module/version.js +1 -1
- package/dist/typescript/components/Call/CallContent/CallContent.d.ts.map +1 -1
- package/dist/typescript/components/Call/CallLayout/CallParticipantsGrid.d.ts +2 -2
- package/dist/typescript/components/Call/CallLayout/CallParticipantsGrid.d.ts.map +1 -1
- package/dist/typescript/components/Call/CallLayout/CallParticipantsSpotlight.d.ts +2 -2
- package/dist/typescript/components/Call/CallLayout/CallParticipantsSpotlight.d.ts.map +1 -1
- package/dist/typescript/hooks/useAutoEnterPiPEffect.d.ts.map +1 -1
- package/dist/typescript/hooks/useIsInPiPMode.d.ts +1 -1
- package/dist/typescript/hooks/useIsInPiPMode.d.ts.map +1 -1
- package/dist/typescript/providers/StreamCall/AppStateListener.d.ts +2 -0
- package/dist/typescript/providers/StreamCall/AppStateListener.d.ts.map +1 -0
- package/dist/typescript/providers/StreamCall/DeviceStats.d.ts +5 -0
- package/dist/typescript/providers/StreamCall/DeviceStats.d.ts.map +1 -0
- package/dist/typescript/providers/{StreamCall.d.ts → StreamCall/index.d.ts} +1 -1
- package/dist/typescript/providers/StreamCall/index.d.ts.map +1 -0
- package/dist/typescript/utils/internal/rxSubjects.d.ts +4 -0
- package/dist/typescript/utils/internal/rxSubjects.d.ts.map +1 -0
- package/dist/typescript/version.d.ts +1 -1
- package/expo-config-plugin/dist/common/types.d.ts +1 -4
- package/expo-config-plugin/dist/withMainActivity.js +42 -36
- package/package.json +1 -1
- package/src/components/Call/CallContent/CallContent.tsx +2 -1
- package/src/components/Call/CallLayout/CallParticipantsGrid.tsx +2 -6
- package/src/components/Call/CallLayout/CallParticipantsSpotlight.tsx +2 -6
- package/src/hooks/useAutoEnterPiPEffect.tsx +5 -2
- package/src/hooks/useIsInPiPMode.tsx +16 -52
- package/src/providers/StreamCall/AppStateListener.tsx +125 -0
- package/src/providers/StreamCall/DeviceStats.tsx +59 -0
- package/src/providers/StreamCall/index.tsx +78 -0
- package/src/utils/internal/rxSubjects.ts +5 -0
- package/src/version.ts +1 -1
- package/dist/commonjs/providers/StreamCall.js +0 -155
- package/dist/commonjs/providers/StreamCall.js.map +0 -1
- package/dist/module/providers/StreamCall.js +0 -146
- package/dist/module/providers/StreamCall.js.map +0 -1
- package/dist/typescript/providers/StreamCall.d.ts.map +0 -1
- package/src/providers/StreamCall.tsx +0 -205
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
4
|
|
|
5
|
+
## [1.9.0](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-1.8.0...@stream-io/video-react-native-sdk-1.9.0) (2025-01-16)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* android 12+ pip uses setAutoEnterEnabled api ([#1643](https://github.com/GetStream/stream-video-js/issues/1643)) ([b07a9a6](https://github.com/GetStream/stream-video-js/commit/b07a9a6a2d97fded37161cfbabc4d9a73baae26a))
|
|
11
|
+
|
|
5
12
|
## [1.8.0](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-1.7.0...@stream-io/video-react-native-sdk-1.8.0) (2025-01-15)
|
|
6
13
|
|
|
7
14
|
### Dependency Updates
|
|
@@ -1,28 +1,40 @@
|
|
|
1
1
|
package com.streamvideo.reactnative
|
|
2
|
-
import kotlin.properties.Delegates
|
|
3
2
|
|
|
3
|
+
import android.content.res.Configuration
|
|
4
|
+
import java.util.concurrent.CopyOnWriteArrayList // For thread safety
|
|
4
5
|
|
|
5
6
|
object StreamVideoReactNative {
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
// Use CopyOnWriteArrayList for thread safety
|
|
9
|
+
private val pipListeners = CopyOnWriteArrayList<(isInPip: Boolean, newConfig: Configuration) -> Unit>()
|
|
8
10
|
|
|
9
11
|
@JvmField
|
|
10
12
|
var canAutoEnterPictureInPictureMode = false
|
|
11
13
|
|
|
12
|
-
|
|
13
|
-
private var isInPictureInPictureMode: Boolean by Delegates.observable(false) { _, _, newValue ->
|
|
14
|
-
pipListeners.forEach {listener ->
|
|
15
|
-
listener(newValue)
|
|
16
|
-
}
|
|
17
|
-
}
|
|
14
|
+
private var isInPictureInPictureMode: Boolean = false
|
|
18
15
|
|
|
19
|
-
@
|
|
16
|
+
@Deprecated("No need to use setup() anymore")
|
|
17
|
+
@JvmStatic
|
|
20
18
|
fun setup() {
|
|
21
|
-
//
|
|
19
|
+
// Do nothing
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
@JvmStatic
|
|
23
|
+
fun addPipListener(listener: (isInPip: Boolean, newConfig: Configuration) -> Unit) {
|
|
24
|
+
pipListeners.add(listener)
|
|
22
25
|
}
|
|
23
26
|
|
|
24
27
|
@JvmStatic
|
|
25
|
-
fun
|
|
28
|
+
fun clearPipListeners() {
|
|
29
|
+
pipListeners.clear()
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@JvmStatic
|
|
33
|
+
fun onPictureInPictureModeChanged(isInPictureInPictureMode: Boolean, newConfig: Configuration) {
|
|
26
34
|
this.isInPictureInPictureMode = isInPictureInPictureMode
|
|
35
|
+
// Iterate safely over the list
|
|
36
|
+
pipListeners.forEach { listener ->
|
|
37
|
+
listener(isInPictureInPictureMode, newConfig)
|
|
38
|
+
}
|
|
27
39
|
}
|
|
28
40
|
}
|
|
@@ -2,17 +2,19 @@ package com.streamvideo.reactnative
|
|
|
2
2
|
|
|
3
3
|
import android.app.AppOpsManager
|
|
4
4
|
import android.app.PictureInPictureParams
|
|
5
|
-
import android.content.Context
|
|
6
|
-
import android.content.pm.PackageManager
|
|
7
5
|
import android.content.BroadcastReceiver
|
|
6
|
+
import android.content.Context
|
|
8
7
|
import android.content.Intent
|
|
9
8
|
import android.content.IntentFilter
|
|
9
|
+
import android.content.pm.ActivityInfo
|
|
10
|
+
import android.content.pm.PackageManager
|
|
10
11
|
import android.net.Uri
|
|
11
12
|
import android.os.Build
|
|
12
13
|
import android.os.PowerManager
|
|
13
14
|
import android.os.Process
|
|
14
15
|
import android.util.Rational
|
|
15
16
|
import androidx.annotation.RequiresApi
|
|
17
|
+
import com.facebook.react.ReactActivity
|
|
16
18
|
import com.facebook.react.bridge.Promise
|
|
17
19
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
18
20
|
import com.facebook.react.bridge.ReactContextBaseJavaModule
|
|
@@ -31,10 +33,34 @@ class StreamVideoReactNativeModule(reactContext: ReactApplicationContext) : Reac
|
|
|
31
33
|
|
|
32
34
|
override fun initialize() {
|
|
33
35
|
super.initialize()
|
|
34
|
-
StreamVideoReactNative.
|
|
36
|
+
StreamVideoReactNative.addPipListener { isInPictureInPictureMode, newConfig ->
|
|
37
|
+
// Send event to JavaScript
|
|
35
38
|
reactApplicationContext.getJSModule(
|
|
36
39
|
RCTDeviceEventEmitter::class.java
|
|
37
40
|
).emit(PIP_CHANGE_EVENT, isInPictureInPictureMode)
|
|
41
|
+
// inform the activity
|
|
42
|
+
if (isInPictureInPictureMode && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
43
|
+
(reactApplicationContext.currentActivity as? ReactActivity)?.let { activity ->
|
|
44
|
+
val params = getPiPParams()
|
|
45
|
+
val aspect =
|
|
46
|
+
if (newConfig.orientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
|
|
47
|
+
Rational(9, 16)
|
|
48
|
+
} else {
|
|
49
|
+
Rational(16, 9)
|
|
50
|
+
}
|
|
51
|
+
params.setAspectRatio(aspect)
|
|
52
|
+
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) {
|
|
53
|
+
// this platform doesn't support autoEnterEnabled
|
|
54
|
+
// so we manually enter here
|
|
55
|
+
activity.enterPictureInPictureMode(params.build())
|
|
56
|
+
} else {
|
|
57
|
+
activity.setPictureInPictureParams(params.build())
|
|
58
|
+
}
|
|
59
|
+
// NOTE: workaround - on PiP mode, android goes to "paused but can render" state
|
|
60
|
+
// RN pauses rendering in paused mode, so we instruct it to resume here
|
|
61
|
+
activity.reactDelegate?.onHostResume()
|
|
62
|
+
}
|
|
63
|
+
}
|
|
38
64
|
}
|
|
39
65
|
|
|
40
66
|
val filter = IntentFilter(PowerManager.ACTION_POWER_SAVE_MODE_CHANGED)
|
|
@@ -59,35 +85,38 @@ class StreamVideoReactNativeModule(reactContext: ReactApplicationContext) : Reac
|
|
|
59
85
|
promise.resolve(inPictureInPictureMode)
|
|
60
86
|
}
|
|
61
87
|
|
|
88
|
+
@Suppress("UNUSED_PARAMETER")
|
|
62
89
|
@ReactMethod
|
|
63
90
|
fun addListener(eventName: String?) {
|
|
64
91
|
}
|
|
65
92
|
|
|
93
|
+
@Suppress("UNUSED_PARAMETER")
|
|
66
94
|
@ReactMethod
|
|
67
95
|
fun removeListeners(count: Int) {
|
|
68
96
|
}
|
|
69
97
|
|
|
70
|
-
@RequiresApi(Build.VERSION_CODES.O)
|
|
71
|
-
@ReactMethod
|
|
72
|
-
fun enterPipMode(width: Int, height: Int) {
|
|
73
|
-
if (hasPermission()) {
|
|
74
|
-
val width1 = if (width > 0) width else 480
|
|
75
|
-
val height1 = if (height > 0) height else 640
|
|
76
|
-
val ratio = Rational(width1, height1)
|
|
77
|
-
val pipBuilder = PictureInPictureParams.Builder()
|
|
78
|
-
pipBuilder.setAspectRatio(ratio)
|
|
79
|
-
reactApplicationContext!!.currentActivity!!.enterPictureInPictureMode(pipBuilder.build())
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
98
|
override fun invalidate() {
|
|
84
|
-
StreamVideoReactNative.
|
|
99
|
+
StreamVideoReactNative.clearPipListeners()
|
|
100
|
+
reactApplicationContext.unregisterReceiver(powerReceiver)
|
|
101
|
+
stopThermalStatusUpdates()
|
|
85
102
|
super.invalidate()
|
|
86
103
|
}
|
|
87
104
|
|
|
88
105
|
@ReactMethod
|
|
89
106
|
fun canAutoEnterPipMode(value: Boolean) {
|
|
90
107
|
StreamVideoReactNative.canAutoEnterPictureInPictureMode = value
|
|
108
|
+
if (!hasPermission() || Build.VERSION.SDK_INT < Build.VERSION_CODES.S) return
|
|
109
|
+
val activity = reactApplicationContext!!.currentActivity!!
|
|
110
|
+
if (value) {
|
|
111
|
+
activity.setPictureInPictureParams(getPiPParams().build())
|
|
112
|
+
// NOTE: for SDK_INT < Build.VERSION_CODES.S
|
|
113
|
+
// onUserLeaveHint from Activity is used, SDK cant directly use it
|
|
114
|
+
// onUserLeaveHint will call the PiP listener and we call enterPictureInPictureMode there
|
|
115
|
+
} else {
|
|
116
|
+
val params = PictureInPictureParams.Builder()
|
|
117
|
+
params.setAutoEnterEnabled(false)
|
|
118
|
+
activity.setPictureInPictureParams(params.build())
|
|
119
|
+
}
|
|
91
120
|
}
|
|
92
121
|
|
|
93
122
|
@ReactMethod
|
|
@@ -171,12 +200,6 @@ class StreamVideoReactNativeModule(reactContext: ReactApplicationContext) : Reac
|
|
|
171
200
|
}
|
|
172
201
|
}
|
|
173
202
|
|
|
174
|
-
override fun onCatalystInstanceDestroy() {
|
|
175
|
-
super.onCatalystInstanceDestroy()
|
|
176
|
-
reactApplicationContext.unregisterReceiver(powerReceiver)
|
|
177
|
-
stopThermalStatusUpdates()
|
|
178
|
-
}
|
|
179
|
-
|
|
180
203
|
private fun sendPowerModeEvent() {
|
|
181
204
|
val powerManager = reactApplicationContext.getSystemService(Context.POWER_SERVICE) as PowerManager
|
|
182
205
|
val isLowPowerMode = powerManager.isPowerSaveMode
|
|
@@ -210,6 +233,31 @@ class StreamVideoReactNativeModule(reactContext: ReactApplicationContext) : Reac
|
|
|
210
233
|
}
|
|
211
234
|
}
|
|
212
235
|
|
|
236
|
+
@RequiresApi(Build.VERSION_CODES.O)
|
|
237
|
+
private fun getPiPParams(): PictureInPictureParams.Builder {
|
|
238
|
+
val activity = reactApplicationContext!!.currentActivity!!
|
|
239
|
+
val currentOrientation = activity.resources.configuration.orientation
|
|
240
|
+
|
|
241
|
+
val aspect =
|
|
242
|
+
if (currentOrientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
|
|
243
|
+
Rational(9, 16)
|
|
244
|
+
} else {
|
|
245
|
+
Rational(16, 9)
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
val params = PictureInPictureParams.Builder()
|
|
249
|
+
params.setAspectRatio(aspect).apply {
|
|
250
|
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
|
251
|
+
setAutoEnterEnabled(true)
|
|
252
|
+
}
|
|
253
|
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
|
254
|
+
setTitle("Video Player")
|
|
255
|
+
setSeamlessResizeEnabled(false)
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return params
|
|
259
|
+
}
|
|
260
|
+
|
|
213
261
|
companion object {
|
|
214
262
|
private const val NAME = "StreamVideoReactNative"
|
|
215
263
|
private const val PIP_CHANGE_EVENT = NAME + "_PIP_CHANGE_EVENT"
|
|
@@ -58,7 +58,7 @@ const CallContent = ({
|
|
|
58
58
|
const _remoteParticipants = useRemoteParticipants();
|
|
59
59
|
const remoteParticipants = (0, _hooks.useDebouncedValue)(_remoteParticipants, 300); // we debounce the remote participants to avoid unnecessary rerenders that happen when participant tracks are all subscribed simultaneously
|
|
60
60
|
const localParticipant = useLocalParticipant();
|
|
61
|
-
const isInPiPMode = (0, _hooks2.useIsInPiPMode)(
|
|
61
|
+
const isInPiPMode = (0, _hooks2.useIsInPiPMode)();
|
|
62
62
|
const hasScreenShare = useHasOngoingScreenShare();
|
|
63
63
|
const showSpotlightLayout = hasScreenShare || layout === 'spotlight';
|
|
64
64
|
const showFloatingView = !showSpotlightLayout && !isInPiPMode && remoteParticipants.length > 0 && remoteParticipants.length < 3;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeIncallManager","_interopRequireDefault","_CallLayout","_CallControls","_videoReactBindings","_constants","_hooks","_Participant","_contexts","_hooks2","_ScreenShareOverlay","_RTCViewPipIOS","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","arguments","length","apply","CallContent","onHangupCallHandler","CallParticipantsList","CallControls","DefaultCallControls","FloatingParticipantView","DefaultFloatingParticipantView","ScreenShareOverlay","DefaultScreenShareOverlay","ParticipantLabel","ParticipantNetworkQualityIndicator","ParticipantReaction","ParticipantVideoFallback","ParticipantView","VideoRenderer","layout","landscape","supportedReactions","iOSPiPIncludeLocalParticipantVideo","disablePictureInPicture","showRemoteParticipantInFloatingView","setShowRemoteParticipantInFloatingView","useState","styles","useStyles","theme","callContent","useTheme","useCallSettings","useHasOngoingScreenShare","useRemoteParticipants","useLocalParticipant","useCallStateHooks","useAutoEnterPiPEffect","callSettings","isVideoEnabledInCall","video","enabled","_remoteParticipants","remoteParticipants","useDebouncedValue","localParticipant","isInPiPMode","useIsInPiPMode","hasScreenShare","showSpotlightLayout","showFloatingView","isRemoteParticipantInFloatingView","useEffect","InCallManager","start","media","stop","handleFloatingViewParticipantSwitch","prevState","participantViewProps","callParticipantsGridProps","showLocalParticipant","callParticipantsSpotlightProps","landscapeStyles","flexDirection","createElement","Fragment","includeLocalParticipantVideo","View","style","container","content","callParticipantsContainer","view","topContainer","pointerEvents","participant","onPressHandler","CallParticipantsSpotlight","CallParticipantsGrid","exports","useMemo","StyleSheet","create","flex","paddingBottom","variants","insets","bottom","paddingLeft","left","paddingRight","right","paddingTop","top","backgroundColor","colors","sheetPrimary","absoluteFillObject","zIndex","Z_INDEX","IN_FRONT"],"sourceRoot":"../../../../../src","sources":["components/Call/CallContent/CallContent.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,yBAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AAMA,IAAAK,aAAA,GAAAL,OAAA;AAKA,IAAAM,mBAAA,GAAAN,OAAA;AAGA,IAAAO,UAAA,GAAAP,OAAA;AACA,IAAAQ,MAAA,GAAAR,OAAA;AACA,IAAAS,YAAA,GAAAT,OAAA;AAKA,IAAAU,SAAA,GAAAV,OAAA;AAKA,IAAAW,OAAA,GAAAX,OAAA;AACA,IAAAY,mBAAA,GAAAZ,OAAA;AAIA,IAAAa,cAAA,GAAAV,sBAAA,CAAAH,OAAA;AAA4C,SAAAG,uBAAAW,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,yBAAAH,CAAA,6BAAAI,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAD,wBAAA,YAAAA,CAAAH,CAAA,WAAAA,CAAA,GAAAM,CAAA,GAAAD,CAAA,KAAAL,CAAA;AAAA,SAAAf,wBAAAe,CAAA,EAAAK,CAAA,SAAAA,CAAA,IAAAL,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAE,OAAA,EAAAF,CAAA,QAAAM,CAAA,GAAAH,wBAAA,CAAAE,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAC,GAAA,CAAAP,CAAA,UAAAM,CAAA,CAAAE,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAf,CAAA,oBAAAe,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAd,CAAA,EAAAe,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAf,CAAA,CAAAe,CAAA,YAAAN,CAAA,CAAAP,OAAA,GAAAF,CAAA,EAAAM,CAAA,IAAAA,CAAA,CAAAa,GAAA,CAAAnB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAAA,SAAAW,SAAA,WAAAA,QAAA,GAAAR,MAAA,CAAAS,MAAA,GAAAT,MAAA,CAAAS,MAAA,CAAAC,IAAA,eAAAb,CAAA,aAAAT,CAAA,MAAAA,CAAA,GAAAuB,SAAA,CAAAC,MAAA,EAAAxB,CAAA,UAAAM,CAAA,GAAAiB,SAAA,CAAAvB,CAAA,YAAAK,CAAA,IAAAC,CAAA,OAAAU,cAAA,CAAAC,IAAA,CAAAX,CAAA,EAAAD,CAAA,MAAAI,CAAA,CAAAJ,CAAA,IAAAC,CAAA,CAAAD,CAAA,aAAAI,CAAA,KAAAW,QAAA,CAAAK,KAAA,OAAAF,SAAA;AAsDrC,MAAMG,WAAW,GAAGA,CAAC;EAC1BC,mBAAmB;EACnBC,oBAAoB;EACpBC,YAAY,GAAGC,0BAAmB;EAClCC,uBAAuB,GAAGC,oCAA8B;EACxDC,kBAAkB,GAAGC,sCAAyB;EAC9CC,gBAAgB;EAChBC,kCAAkC;EAClCC,mBAAmB;EACnBC,wBAAwB;EACxBC,eAAe;EACfC,aAAa;EACbC,MAAM,GAAG,MAAM;EACfC,SAAS,GAAG,KAAK;EACjBC,kBAAkB;EAClBC,kCAAkC;EAClCC;AACgB,CAAC,KAAK;EACtB,MAAM,CACJC,mCAAmC,EACnCC,sCAAsC,CACvC,GAAG,IAAAC,eAAQ,EAAU,KAAK,CAAC;EAC5B,MAAMC,MAAM,GAAGC,SAAS,CAAC,CAAC;EAC1B,MAAM;IACJC,KAAK,EAAE;MAAEC;IAAY;EACvB,CAAC,GAAG,IAAAC,kBAAQ,EAAC,CAAC;EACd,MAAM;IACJC,eAAe;IACfC,wBAAwB;IACxBC,qBAAqB;IACrBC;EACF,CAAC,GAAG,IAAAC,qCAAiB,EAAC,CAAC;EAEvB,IAAAC,6BAAqB,EAACd,uBAAuB,CAAC;EAE9C,MAAMe,YAAY,GAAGN,eAAe,CAAC,CAAC;EACtC,MAAMO,oBAAoB,GAAGD,YAAY,EAAEE,KAAK,CAACC,OAAO;EAExD,MAAMC,mBAAmB,GAAGR,qBAAqB,CAAC,CAAC;EACnD,MAAMS,kBAAkB,GAAG,IAAAC,wBAAiB,EAACF,mBAAmB,EAAE,GAAG,CAAC,CAAC,CAAC;EACxE,MAAMG,gBAAgB,GAAGV,mBAAmB,CAAC,CAAC;EAC9C,MAAMW,WAAW,GAAG,IAAAC,sBAAc,
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeIncallManager","_interopRequireDefault","_CallLayout","_CallControls","_videoReactBindings","_constants","_hooks","_Participant","_contexts","_hooks2","_ScreenShareOverlay","_RTCViewPipIOS","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","arguments","length","apply","CallContent","onHangupCallHandler","CallParticipantsList","CallControls","DefaultCallControls","FloatingParticipantView","DefaultFloatingParticipantView","ScreenShareOverlay","DefaultScreenShareOverlay","ParticipantLabel","ParticipantNetworkQualityIndicator","ParticipantReaction","ParticipantVideoFallback","ParticipantView","VideoRenderer","layout","landscape","supportedReactions","iOSPiPIncludeLocalParticipantVideo","disablePictureInPicture","showRemoteParticipantInFloatingView","setShowRemoteParticipantInFloatingView","useState","styles","useStyles","theme","callContent","useTheme","useCallSettings","useHasOngoingScreenShare","useRemoteParticipants","useLocalParticipant","useCallStateHooks","useAutoEnterPiPEffect","callSettings","isVideoEnabledInCall","video","enabled","_remoteParticipants","remoteParticipants","useDebouncedValue","localParticipant","isInPiPMode","useIsInPiPMode","hasScreenShare","showSpotlightLayout","showFloatingView","isRemoteParticipantInFloatingView","useEffect","InCallManager","start","media","stop","handleFloatingViewParticipantSwitch","prevState","participantViewProps","callParticipantsGridProps","showLocalParticipant","callParticipantsSpotlightProps","landscapeStyles","flexDirection","createElement","Fragment","includeLocalParticipantVideo","View","style","container","content","callParticipantsContainer","view","topContainer","pointerEvents","participant","onPressHandler","CallParticipantsSpotlight","CallParticipantsGrid","exports","useMemo","StyleSheet","create","flex","paddingBottom","variants","insets","bottom","paddingLeft","left","paddingRight","right","paddingTop","top","backgroundColor","colors","sheetPrimary","absoluteFillObject","zIndex","Z_INDEX","IN_FRONT"],"sourceRoot":"../../../../../src","sources":["components/Call/CallContent/CallContent.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -31,8 +31,7 @@ const CallParticipantsGrid = ({
|
|
|
31
31
|
VideoRenderer,
|
|
32
32
|
showLocalParticipant = false,
|
|
33
33
|
supportedReactions,
|
|
34
|
-
landscape
|
|
35
|
-
disablePictureInPicture
|
|
34
|
+
landscape
|
|
36
35
|
}) => {
|
|
37
36
|
const {
|
|
38
37
|
theme: {
|
|
@@ -56,7 +55,7 @@ const CallParticipantsGrid = ({
|
|
|
56
55
|
const landscapeStyles = {
|
|
57
56
|
flexDirection: landscape ? 'row' : 'column'
|
|
58
57
|
};
|
|
59
|
-
const isInPiPMode = (0, _useIsInPiPMode.useIsInPiPMode)(
|
|
58
|
+
const isInPiPMode = (0, _useIsInPiPMode.useIsInPiPMode)();
|
|
60
59
|
const showFloatingView = !isInPiPMode && remoteParticipants.length > 0 && remoteParticipants.length < 3;
|
|
61
60
|
let participants = showFloatingView ? showLocalParticipant && localParticipant ? [localParticipant] : remoteParticipants : allParticipants;
|
|
62
61
|
if (isInPiPMode) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_videoReactBindings","_useDebouncedValue","_CallParticipantsList","_TestIds","_ThemeContext","_useIsInPiPMode","e","__esModule","default","_extends","Object","assign","bind","n","arguments","length","t","r","hasOwnProperty","call","apply","CallParticipantsGrid","CallParticipantsList","DefaultCallParticipantsList","ParticipantLabel","ParticipantNetworkQualityIndicator","ParticipantReaction","ParticipantVideoFallback","ParticipantView","VideoRenderer","showLocalParticipant","supportedReactions","landscape","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_videoReactBindings","_useDebouncedValue","_CallParticipantsList","_TestIds","_ThemeContext","_useIsInPiPMode","e","__esModule","default","_extends","Object","assign","bind","n","arguments","length","t","r","hasOwnProperty","call","apply","CallParticipantsGrid","CallParticipantsList","DefaultCallParticipantsList","ParticipantLabel","ParticipantNetworkQualityIndicator","ParticipantReaction","ParticipantVideoFallback","ParticipantView","VideoRenderer","showLocalParticipant","supportedReactions","landscape","theme","colors","callParticipantsGrid","useTheme","useRemoteParticipants","useParticipants","useLocalParticipant","useDominantSpeaker","useCallStateHooks","_remoteParticipants","localParticipant","_allParticipants","dominantSpeaker","remoteParticipants","useDebouncedValue","allParticipants","landscapeStyles","flexDirection","isInPiPMode","useIsInPiPMode","showFloatingView","participants","participantViewProps","createElement","View","style","styles","container","backgroundColor","sheetPrimary","testID","ComponentTestIds","CALL_PARTICIPANTS_GRID","exports","StyleSheet","create","flex"],"sourceRoot":"../../../../../src","sources":["components/Call/CallLayout/CallParticipantsGrid.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -35,8 +35,7 @@ const CallParticipantsSpotlight = ({
|
|
|
35
35
|
ScreenShareOverlay,
|
|
36
36
|
VideoRenderer,
|
|
37
37
|
supportedReactions,
|
|
38
|
-
landscape
|
|
39
|
-
disablePictureInPicture
|
|
38
|
+
landscape
|
|
40
39
|
}) => {
|
|
41
40
|
const {
|
|
42
41
|
theme: {
|
|
@@ -55,7 +54,7 @@ const CallParticipantsSpotlight = ({
|
|
|
55
54
|
const [participantInSpotlight, ...otherParticipants] = allParticipants;
|
|
56
55
|
const isScreenShareOnSpotlight = participantInSpotlight && (0, _videoClient.hasScreenShare)(participantInSpotlight);
|
|
57
56
|
const isUserAloneInCall = _allParticipants?.length === 1;
|
|
58
|
-
const isInPiP = (0, _useIsInPiPMode.useIsInPiPMode)(
|
|
57
|
+
const isInPiP = (0, _useIsInPiPMode.useIsInPiPMode)();
|
|
59
58
|
const participantViewProps = {
|
|
60
59
|
ParticipantLabel,
|
|
61
60
|
ParticipantNetworkQualityIndicator,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_videoClient","_videoReactBindings","_reactNative","_useDebouncedValue","_TestIds","_CallParticipantsList","_Participant","_ThemeContext","_useIsInPiPMode","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","arguments","length","apply","CallParticipantsSpotlight","CallParticipantsList","DefaultCallParticipantsList","ParticipantLabel","ParticipantNetworkQualityIndicator","ParticipantReaction","ParticipantVideoFallback","ParticipantView","DefaultParticipantView","ScreenShareOverlay","VideoRenderer","supportedReactions","landscape","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_videoClient","_videoReactBindings","_reactNative","_useDebouncedValue","_TestIds","_CallParticipantsList","_Participant","_ThemeContext","_useIsInPiPMode","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","arguments","length","apply","CallParticipantsSpotlight","CallParticipantsList","DefaultCallParticipantsList","ParticipantLabel","ParticipantNetworkQualityIndicator","ParticipantReaction","ParticipantVideoFallback","ParticipantView","DefaultParticipantView","ScreenShareOverlay","VideoRenderer","supportedReactions","landscape","theme","callParticipantsSpotlight","variants","useTheme","styles","useStyles","useParticipants","useCallStateHooks","_allParticipants","sortBy","speakerLayoutSortPreset","allParticipants","useDebouncedValue","participantInSpotlight","otherParticipants","isScreenShareOnSpotlight","hasScreenShare","isUserAloneInCall","isInPiP","useIsInPiPMode","participantViewProps","callParticipantsListProps","landscapeStyles","flexDirection","spotlightContainerLandscapeStyles","marginHorizontal","spacingSizes","xs","showShareScreenOverlay","isLocalParticipant","createElement","View","testID","ComponentTestIds","CALL_PARTICIPANTS_SPOTLIGHT","style","container","participant","fullScreenSpotlightContainer","spotlightContainer","objectFit","trackType","callParticipantsListContainer","participants","horizontal","numberOfColumns","exports","useMemo","StyleSheet","create","flex","backgroundColor","colors","sheetPrimary","overflow","borderRadius","borderRadiusSizes","sm"],"sourceRoot":"../../../../../src","sources":["components/Call/CallLayout/CallParticipantsSpotlight.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -8,13 +8,14 @@ var _videoClient = require("@stream-io/video-client");
|
|
|
8
8
|
var _videoReactBindings = require("@stream-io/video-react-bindings");
|
|
9
9
|
var _react = require("react");
|
|
10
10
|
var _reactNative = require("react-native");
|
|
11
|
+
var _rxSubjects = require("../utils/internal/rxSubjects");
|
|
11
12
|
function useAutoEnterPiPEffect(disablePictureInPicture) {
|
|
12
13
|
const {
|
|
13
14
|
useCallCallingState
|
|
14
15
|
} = (0, _videoReactBindings.useCallStateHooks)();
|
|
15
16
|
const callingState = useCallCallingState();
|
|
16
17
|
|
|
17
|
-
// if we need to enable, only enable in joined state
|
|
18
|
+
// if we need to enable autoEnter, only enable in joined state
|
|
18
19
|
(0, _react.useEffect)(() => {
|
|
19
20
|
if (_reactNative.Platform.OS !== 'android') {
|
|
20
21
|
return;
|
|
@@ -23,12 +24,13 @@ function useAutoEnterPiPEffect(disablePictureInPicture) {
|
|
|
23
24
|
_reactNative.NativeModules.StreamVideoReactNative.canAutoEnterPipMode(!disablePictureInPicture);
|
|
24
25
|
}
|
|
25
26
|
}, [callingState, disablePictureInPicture]);
|
|
26
|
-
|
|
27
|
-
// on unmount always disable PiP mode
|
|
28
27
|
(0, _react.useEffect)(() => {
|
|
28
|
+
_rxSubjects.disablePiPMode$.next(disablePictureInPicture === true);
|
|
29
29
|
if (_reactNative.Platform.OS !== 'android') {
|
|
30
30
|
return;
|
|
31
31
|
}
|
|
32
|
+
|
|
33
|
+
// on unmount always disable PiP mode auto enter
|
|
32
34
|
return () => {
|
|
33
35
|
_reactNative.NativeModules.StreamVideoReactNative.canAutoEnterPipMode(false);
|
|
34
36
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_videoClient","require","_videoReactBindings","_react","_reactNative","useAutoEnterPiPEffect","disablePictureInPicture","useCallCallingState","useCallStateHooks","callingState","useEffect","Platform","OS","CallingState","JOINED","NativeModules","StreamVideoReactNative","canAutoEnterPipMode"],"sourceRoot":"../../../src","sources":["hooks/useAutoEnterPiPEffect.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AAEO,
|
|
1
|
+
{"version":3,"names":["_videoClient","require","_videoReactBindings","_react","_reactNative","_rxSubjects","useAutoEnterPiPEffect","disablePictureInPicture","useCallCallingState","useCallStateHooks","callingState","useEffect","Platform","OS","CallingState","JOINED","NativeModules","StreamVideoReactNative","canAutoEnterPipMode","disablePiPMode$","next"],"sourceRoot":"../../../src","sources":["hooks/useAutoEnterPiPEffect.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AAEO,SAASK,qBAAqBA,CACnCC,uBAA4C,EAC5C;EACA,MAAM;IAAEC;EAAoB,CAAC,GAAG,IAAAC,qCAAiB,EAAC,CAAC;EAEnD,MAAMC,YAAY,GAAGF,mBAAmB,CAAC,CAAC;;EAE1C;EACA,IAAAG,gBAAS,EAAC,MAAM;IACd,IAAIC,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;MAC7B;IACF;IAEA,IAAI,CAACN,uBAAuB,IAAIG,YAAY,KAAKI,yBAAY,CAACC,MAAM,EAAE;MACpEC,0BAAa,CAACC,sBAAsB,CAACC,mBAAmB,CACtD,CAACX,uBACH,CAAC;IACH;EACF,CAAC,EAAE,CAACG,YAAY,EAAEH,uBAAuB,CAAC,CAAC;EAE3C,IAAAI,gBAAS,EAAC,MAAM;IACdQ,2BAAe,CAACC,IAAI,CAACb,uBAAuB,KAAK,IAAI,CAAC;IAEtD,IAAIK,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;MAC7B;IACF;;IAEA;IACA,OAAO,MAAM;MACXG,0BAAa,CAACC,sBAAsB,CAACC,mBAAmB,CAAC,KAAK,CAAC;IACjE,CAAC;EACH,CAAC,EAAE,CAACX,uBAAuB,CAAC,CAAC;;EAE7B;EACA,IAAAI,gBAAS,EAAC,MAAM;IACd,IAAIC,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;MAC7B;IACF;IAEA,IAAIN,uBAAuB,EAAE;MAC3BS,0BAAa,CAACC,sBAAsB,CAACC,mBAAmB,CAAC,KAAK,CAAC;IACjE;EACF,CAAC,EAAE,CAACX,uBAAuB,CAAC,CAAC;AAC/B","ignoreList":[]}
|
|
@@ -5,34 +5,24 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.useIsInPiPMode = useIsInPiPMode;
|
|
7
7
|
var _react = require("react");
|
|
8
|
-
var
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
var _videoClient = require("@stream-io/video-client");
|
|
9
|
+
var _rxSubjects = require("../utils/internal/rxSubjects");
|
|
10
|
+
function useIsInPiPMode() {
|
|
11
|
+
const [value, setValue] = (0, _react.useState)(() => {
|
|
12
|
+
return _videoClient.RxUtils.getCurrentValue(_rxSubjects.isInPiPModeAndroid$);
|
|
13
|
+
});
|
|
13
14
|
(0, _react.useEffect)(() => {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const setFromNativeMethod = async () => {
|
|
20
|
-
const isInPiPNativeMethod = await _reactNative.NativeModules?.StreamVideoReactNative?.isInPiPMode();
|
|
21
|
-
setIsInPiPMode(!!isInPiPNativeMethod);
|
|
22
|
-
};
|
|
23
|
-
const subscriptionAppState = _reactNative.AppState.addEventListener('change', nextAppState => {
|
|
24
|
-
if (nextAppState === 'background') {
|
|
25
|
-
setIsInPiPMode(!disablePictureInPicture); // set with an assumption that its enabled so that UI disabling happens faster
|
|
26
|
-
// if PiP was not enabled anyway, then in the next code we ll set it to false and UI wont be shown anyway
|
|
15
|
+
const subscription = _rxSubjects.isInPiPModeAndroid$.subscribe({
|
|
16
|
+
next: setValue,
|
|
17
|
+
error: err => {
|
|
18
|
+
console.log('An error occurred while reading isInPiPModeAndroid$', err);
|
|
19
|
+
setValue(false);
|
|
27
20
|
}
|
|
28
|
-
setFromNativeMethod();
|
|
29
21
|
});
|
|
30
|
-
setFromNativeMethod();
|
|
31
22
|
return () => {
|
|
32
|
-
|
|
33
|
-
subscriptionAppState.remove();
|
|
23
|
+
subscription.unsubscribe();
|
|
34
24
|
};
|
|
35
|
-
}, [
|
|
36
|
-
return
|
|
25
|
+
}, []);
|
|
26
|
+
return value;
|
|
37
27
|
}
|
|
38
28
|
//# sourceMappingURL=useIsInPiPMode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","
|
|
1
|
+
{"version":3,"names":["_react","require","_videoClient","_rxSubjects","useIsInPiPMode","value","setValue","useState","RxUtils","getCurrentValue","isInPiPModeAndroid$","useEffect","subscription","subscribe","next","error","err","console","log","unsubscribe"],"sourceRoot":"../../../src","sources":["hooks/useIsInPiPMode.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAEO,SAASG,cAAcA,CAAA,EAAG;EAC/B,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAC,eAAQ,EAAU,MAAM;IAChD,OAAOC,oBAAO,CAACC,eAAe,CAACC,+BAAmB,CAAC;EACrD,CAAC,CAAC;EAEF,IAAAC,gBAAS,EAAC,MAAM;IACd,MAAMC,YAAY,GAAGF,+BAAmB,CAACG,SAAS,CAAC;MACjDC,IAAI,EAAER,QAAQ;MACdS,KAAK,EAAGC,GAAG,IAAK;QACdC,OAAO,CAACC,GAAG,CAAC,qDAAqD,EAAEF,GAAG,CAAC;QACvEV,QAAQ,CAAC,KAAK,CAAC;MACjB;IACF,CAAC,CAAC;IACF,OAAO,MAAM;MACXM,YAAY,CAACO,WAAW,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOd,KAAK;AACd","ignoreList":[]}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.AppStateListener = void 0;
|
|
7
|
+
var _videoReactBindings = require("@stream-io/video-react-bindings");
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
var _reactNative = require("react-native");
|
|
10
|
+
var _shouldDisableIOSLocalVideoOnBackground = require("../../utils/internal/shouldDisableIOSLocalVideoOnBackground");
|
|
11
|
+
var _rxSubjects = require("../../utils/internal/rxSubjects");
|
|
12
|
+
var _videoClient = require("@stream-io/video-client");
|
|
13
|
+
const PIP_CHANGE_EVENT = 'StreamVideoReactNative_PIP_CHANGE_EVENT';
|
|
14
|
+
const isAndroid8OrAbove = _reactNative.Platform.OS === 'android' && _reactNative.Platform.Version >= 26;
|
|
15
|
+
|
|
16
|
+
// Does 2 functionalities:
|
|
17
|
+
// 1. Resume/Disable video stream tracks when app goes to background/foreground - To save on CPU resources
|
|
18
|
+
// 2. Handle PiP mode in Android
|
|
19
|
+
const AppStateListener = () => {
|
|
20
|
+
const call = (0, _videoReactBindings.useCall)();
|
|
21
|
+
const appState = (0, _react.useRef)(_reactNative.AppState.currentState);
|
|
22
|
+
|
|
23
|
+
// on mount: set initial PiP mode and listen to PiP events
|
|
24
|
+
(0, _react.useEffect)(() => {
|
|
25
|
+
if (!isAndroid8OrAbove) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const disablePiP = _videoClient.RxUtils.getCurrentValue(_rxSubjects.disablePiPMode$);
|
|
29
|
+
_rxSubjects.isInPiPModeAndroid$.next(!disablePiP && _reactNative.AppState.currentState === 'background');
|
|
30
|
+
const eventEmitter = new _reactNative.NativeEventEmitter(_reactNative.NativeModules.StreamVideoReactNative);
|
|
31
|
+
const subscriptionPiPChange = eventEmitter.addListener(PIP_CHANGE_EVENT, isInPiPMode => {
|
|
32
|
+
_rxSubjects.isInPiPModeAndroid$.next(isInPiPMode);
|
|
33
|
+
});
|
|
34
|
+
return () => {
|
|
35
|
+
subscriptionPiPChange.remove();
|
|
36
|
+
};
|
|
37
|
+
}, []);
|
|
38
|
+
(0, _react.useEffect)(() => {
|
|
39
|
+
// due to strange behavior in iOS when app goes to "inactive" state
|
|
40
|
+
// we dont check for inactive states
|
|
41
|
+
// ref: https://www.reddit.com/r/reactnative/comments/15kib42/appstate_behavior_in_ios_when_swiping_down_to/
|
|
42
|
+
const subscription = _reactNative.AppState.addEventListener('change', nextAppState => {
|
|
43
|
+
if (appState.current.match(/background/) && nextAppState === 'active') {
|
|
44
|
+
if (call?.camera?.state.status === 'enabled' && _reactNative.Platform.OS === 'android') {
|
|
45
|
+
// when device is locked and resumed, the status isnt made disabled but stays enabled
|
|
46
|
+
// as a workaround we stop the track and enable again if its already in enabled state
|
|
47
|
+
call?.camera?.disable(true).then(() => {
|
|
48
|
+
call?.camera?.enable();
|
|
49
|
+
});
|
|
50
|
+
} else {
|
|
51
|
+
call?.camera?.resume();
|
|
52
|
+
}
|
|
53
|
+
appState.current = nextAppState;
|
|
54
|
+
} else if (appState.current === 'active' && nextAppState.match(/background/)) {
|
|
55
|
+
if (_reactNative.Platform.OS === 'android') {
|
|
56
|
+
// in Android, we need to check if we are in PiP mode
|
|
57
|
+
// in PiP mode, we don't want to disable the camera
|
|
58
|
+
const disableCameraIfNeeded = () => {
|
|
59
|
+
if (call?.camera?.state.status === 'enabled') {
|
|
60
|
+
call?.camera?.disable();
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
if (isAndroid8OrAbove) {
|
|
64
|
+
// set with an assumption that its enabled so that UI disabling happens faster
|
|
65
|
+
const disablePiP = _videoClient.RxUtils.getCurrentValue(_rxSubjects.disablePiPMode$);
|
|
66
|
+
_rxSubjects.isInPiPModeAndroid$.next(!disablePiP);
|
|
67
|
+
// if PiP was not enabled anyway, then in the next code we ll set it to false and UI wont be shown anyway
|
|
68
|
+
_reactNative.NativeModules?.StreamVideoReactNative?.isInPiPMode().then(isInPiP => {
|
|
69
|
+
_rxSubjects.isInPiPModeAndroid$.next(!!isInPiP);
|
|
70
|
+
if (!isInPiP) {
|
|
71
|
+
if (_reactNative.AppState.currentState === 'active') {
|
|
72
|
+
// this is to handle the case that the app became active as soon as it went to background
|
|
73
|
+
// in this case, we dont want to disable the camera
|
|
74
|
+
// this happens on foreground push notifications
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
disableCameraIfNeeded();
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
} else {
|
|
81
|
+
disableCameraIfNeeded();
|
|
82
|
+
}
|
|
83
|
+
} else {
|
|
84
|
+
// shouldDisableIOSLocalVideoOnBackgroundRef is false, if local video is enabled on PiP
|
|
85
|
+
if (_shouldDisableIOSLocalVideoOnBackground.shouldDisableIOSLocalVideoOnBackgroundRef.current) {
|
|
86
|
+
if (call?.camera?.state.status === 'enabled') {
|
|
87
|
+
call?.camera?.disable();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
appState.current = nextAppState;
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
return () => {
|
|
95
|
+
subscription.remove();
|
|
96
|
+
};
|
|
97
|
+
}, [call]);
|
|
98
|
+
return null;
|
|
99
|
+
};
|
|
100
|
+
exports.AppStateListener = AppStateListener;
|
|
101
|
+
//# sourceMappingURL=AppStateListener.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_videoReactBindings","require","_react","_reactNative","_shouldDisableIOSLocalVideoOnBackground","_rxSubjects","_videoClient","PIP_CHANGE_EVENT","isAndroid8OrAbove","Platform","OS","Version","AppStateListener","call","useCall","appState","useRef","AppState","currentState","useEffect","disablePiP","RxUtils","getCurrentValue","disablePiPMode$","isInPiPModeAndroid$","next","eventEmitter","NativeEventEmitter","NativeModules","StreamVideoReactNative","subscriptionPiPChange","addListener","isInPiPMode","remove","subscription","addEventListener","nextAppState","current","match","camera","state","status","disable","then","enable","resume","disableCameraIfNeeded","isInPiP","shouldDisableIOSLocalVideoOnBackgroundRef","exports"],"sourceRoot":"../../../../src","sources":["providers/StreamCall/AppStateListener.tsx"],"mappings":"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","ignoreList":[]}
|