@100mslive/react-native-hms 1.9.9 → 1.9.10
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/android/local.properties +8 -1
- package/android/src/main/java/com/reactnativehmssdk/HMSDecoder.kt +2 -0
- package/android/src/main/java/com/reactnativehmssdk/HMSManager.kt +61 -2
- package/android/src/main/java/com/reactnativehmssdk/HMSRNSDK.kt +10 -3
- package/android/src/main/java/com/reactnativehmssdk/Interactivity/HMSInteractivityDecoder.kt +328 -0
- package/android/src/main/java/com/reactnativehmssdk/Interactivity/HMSInteractivityHelper.kt +352 -0
- package/android/src/main/java/com/reactnativehmssdk/Interactivity/HMSRNInteractivityCenter.kt +184 -0
- package/ios/HMSConstants.swift +1 -0
- package/ios/HMSDecoder.swift +3 -1
- package/ios/HMSInteractivityDecoder.swift +223 -0
- package/ios/HMSInteractivityHelper.swift +169 -0
- package/ios/HMSManager.m +17 -0
- package/ios/HMSManager.swift +30 -1
- package/ios/HMSRNInteractivityCenter.swift +89 -0
- package/ios/HMSRNSDK.swift +10 -4
- package/ios/Hmssdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/ios/Hmssdk.xcodeproj/project.xcworkspace/xcuserdata/jatinnagar.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/Hmssdk.xcodeproj/xcuserdata/jatinnagar.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
- package/lib/commonjs/classes/HMSInteractivityCenter.js +93 -0
- package/lib/commonjs/classes/HMSInteractivityCenter.js.map +1 -0
- package/lib/commonjs/classes/HMSInteractivityEncoder.js +33 -0
- package/lib/commonjs/classes/HMSInteractivityEncoder.js.map +1 -0
- package/lib/commonjs/classes/HMSPermissions.js +4 -0
- package/lib/commonjs/classes/HMSPermissions.js.map +1 -1
- package/lib/commonjs/classes/HMSPollsListenerActions.js +11 -0
- package/lib/commonjs/classes/HMSPollsListenerActions.js.map +1 -0
- package/lib/commonjs/classes/HMSSDK.js +8 -0
- package/lib/commonjs/classes/HMSSDK.js.map +1 -1
- package/lib/commonjs/classes/polls/HMSPoll.js +6 -0
- package/lib/commonjs/classes/polls/HMSPoll.js.map +1 -0
- package/lib/commonjs/classes/polls/HMSPollCategory.js +12 -0
- package/lib/commonjs/classes/polls/HMSPollCategory.js.map +1 -0
- package/lib/commonjs/classes/polls/HMSPollCreateParams.js +6 -0
- package/lib/commonjs/classes/polls/HMSPollCreateParams.js.map +1 -0
- package/lib/commonjs/classes/polls/HMSPollQuestion.js +6 -0
- package/lib/commonjs/classes/polls/HMSPollQuestion.js.map +1 -0
- package/lib/commonjs/classes/polls/HMSPollQuestionAnswer.js +2 -0
- package/lib/commonjs/classes/polls/HMSPollQuestionAnswer.js.map +1 -0
- package/lib/commonjs/classes/polls/HMSPollQuestionCreateParams.js +6 -0
- package/lib/commonjs/classes/polls/HMSPollQuestionCreateParams.js.map +1 -0
- package/lib/commonjs/classes/polls/HMSPollQuestionOption.js +2 -0
- package/lib/commonjs/classes/polls/HMSPollQuestionOption.js.map +1 -0
- package/lib/commonjs/classes/polls/HMSPollQuestionOptionCreateParams.js +6 -0
- package/lib/commonjs/classes/polls/HMSPollQuestionOptionCreateParams.js.map +1 -0
- package/lib/commonjs/classes/polls/HMSPollQuestionQuizOptionCreateParams.js +6 -0
- package/lib/commonjs/classes/polls/HMSPollQuestionQuizOptionCreateParams.js.map +1 -0
- package/lib/commonjs/classes/polls/HMSPollQuestionResponse.js +6 -0
- package/lib/commonjs/classes/polls/HMSPollQuestionResponse.js.map +1 -0
- package/lib/commonjs/classes/polls/HMSPollQuestionResponseCreateParams.js +6 -0
- package/lib/commonjs/classes/polls/HMSPollQuestionResponseCreateParams.js.map +1 -0
- package/lib/commonjs/classes/polls/HMSPollQuestionResponseResult.js +2 -0
- package/lib/commonjs/classes/polls/HMSPollQuestionResponseResult.js.map +1 -0
- package/lib/commonjs/classes/polls/HMSPollQuestionResult.js +2 -0
- package/lib/commonjs/classes/polls/HMSPollQuestionResult.js.map +1 -0
- package/lib/commonjs/classes/polls/HMSPollQuestionType.js +14 -0
- package/lib/commonjs/classes/polls/HMSPollQuestionType.js.map +1 -0
- package/lib/commonjs/classes/polls/HMSPollResponsePeerInfo.js +2 -0
- package/lib/commonjs/classes/polls/HMSPollResponsePeerInfo.js.map +1 -0
- package/lib/commonjs/classes/polls/HMSPollResult.js +6 -0
- package/lib/commonjs/classes/polls/HMSPollResult.js.map +1 -0
- package/lib/commonjs/classes/polls/HMSPollState.js +13 -0
- package/lib/commonjs/classes/polls/HMSPollState.js.map +1 -0
- package/lib/commonjs/classes/polls/HMSPollType.js +12 -0
- package/lib/commonjs/classes/polls/HMSPollType.js.map +1 -0
- package/lib/commonjs/classes/polls/HMSPollUpdateType.js +13 -0
- package/lib/commonjs/classes/polls/HMSPollUpdateType.js.map +1 -0
- package/lib/commonjs/classes/polls/HMSPollUserTrackingMode.js +13 -0
- package/lib/commonjs/classes/polls/HMSPollUserTrackingMode.js.map +1 -0
- package/lib/commonjs/hooks/polls.js +17 -0
- package/lib/commonjs/hooks/polls.js.map +1 -0
- package/lib/commonjs/index.js +56 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/stores/hms-interactivity-store.js +21 -0
- package/lib/commonjs/stores/hms-interactivity-store.js.map +1 -0
- package/lib/commonjs/stores/hms-polls-slice.js +19 -0
- package/lib/commonjs/stores/hms-polls-slice.js.map +1 -0
- package/lib/commonjs/stores/types.js.map +1 -1
- package/lib/commonjs/utils/emitter/EventEmitter.js +19 -0
- package/lib/commonjs/utils/emitter/EventEmitter.js.map +1 -1
- package/lib/module/classes/HMSInteractivityCenter.js +85 -0
- package/lib/module/classes/HMSInteractivityCenter.js.map +1 -0
- package/lib/module/classes/HMSInteractivityEncoder.js +26 -0
- package/lib/module/classes/HMSInteractivityEncoder.js.map +1 -0
- package/lib/module/classes/HMSPermissions.js +4 -0
- package/lib/module/classes/HMSPermissions.js.map +1 -1
- package/lib/module/classes/HMSPollsListenerActions.js +5 -0
- package/lib/module/classes/HMSPollsListenerActions.js.map +1 -0
- package/lib/module/classes/HMSSDK.js +8 -0
- package/lib/module/classes/HMSSDK.js.map +1 -1
- package/lib/module/classes/polls/HMSPoll.js +2 -0
- package/lib/module/classes/polls/HMSPoll.js.map +1 -0
- package/lib/module/classes/polls/HMSPollCategory.js +6 -0
- package/lib/module/classes/polls/HMSPollCategory.js.map +1 -0
- package/lib/module/classes/polls/HMSPollCreateParams.js +2 -0
- package/lib/module/classes/polls/HMSPollCreateParams.js.map +1 -0
- package/lib/module/classes/polls/HMSPollQuestion.js +2 -0
- package/lib/module/classes/polls/HMSPollQuestion.js.map +1 -0
- package/lib/module/classes/polls/HMSPollQuestionAnswer.js +2 -0
- package/lib/module/classes/polls/HMSPollQuestionAnswer.js.map +1 -0
- package/lib/module/classes/polls/HMSPollQuestionCreateParams.js +2 -0
- package/lib/module/classes/polls/HMSPollQuestionCreateParams.js.map +1 -0
- package/lib/module/classes/polls/HMSPollQuestionOption.js +2 -0
- package/lib/module/classes/polls/HMSPollQuestionOption.js.map +1 -0
- package/lib/module/classes/polls/HMSPollQuestionOptionCreateParams.js +2 -0
- package/lib/module/classes/polls/HMSPollQuestionOptionCreateParams.js.map +1 -0
- package/lib/module/classes/polls/HMSPollQuestionQuizOptionCreateParams.js +2 -0
- package/lib/module/classes/polls/HMSPollQuestionQuizOptionCreateParams.js.map +1 -0
- package/lib/module/classes/polls/HMSPollQuestionResponse.js +2 -0
- package/lib/module/classes/polls/HMSPollQuestionResponse.js.map +1 -0
- package/lib/module/classes/polls/HMSPollQuestionResponseCreateParams.js +2 -0
- package/lib/module/classes/polls/HMSPollQuestionResponseCreateParams.js.map +1 -0
- package/lib/module/classes/polls/HMSPollQuestionResponseResult.js +2 -0
- package/lib/module/classes/polls/HMSPollQuestionResponseResult.js.map +1 -0
- package/lib/module/classes/polls/HMSPollQuestionResult.js +2 -0
- package/lib/module/classes/polls/HMSPollQuestionResult.js.map +1 -0
- package/lib/module/classes/polls/HMSPollQuestionType.js +8 -0
- package/lib/module/classes/polls/HMSPollQuestionType.js.map +1 -0
- package/lib/module/classes/polls/HMSPollResponsePeerInfo.js +2 -0
- package/lib/module/classes/polls/HMSPollResponsePeerInfo.js.map +1 -0
- package/lib/module/classes/polls/HMSPollResult.js +2 -0
- package/lib/module/classes/polls/HMSPollResult.js.map +1 -0
- package/lib/module/classes/polls/HMSPollState.js +7 -0
- package/lib/module/classes/polls/HMSPollState.js.map +1 -0
- package/lib/module/classes/polls/HMSPollType.js +6 -0
- package/lib/module/classes/polls/HMSPollType.js.map +1 -0
- package/lib/module/classes/polls/HMSPollUpdateType.js +7 -0
- package/lib/module/classes/polls/HMSPollUpdateType.js.map +1 -0
- package/lib/module/classes/polls/HMSPollUserTrackingMode.js +7 -0
- package/lib/module/classes/polls/HMSPollUserTrackingMode.js.map +1 -0
- package/lib/module/hooks/polls.js +12 -0
- package/lib/module/hooks/polls.js.map +1 -0
- package/lib/module/index.js +7 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/stores/hms-interactivity-store.js +15 -0
- package/lib/module/stores/hms-interactivity-store.js.map +1 -0
- package/lib/module/stores/hms-polls-slice.js +12 -0
- package/lib/module/stores/hms-polls-slice.js.map +1 -0
- package/lib/module/stores/types.js.map +1 -1
- package/lib/module/utils/emitter/EventEmitter.js +19 -0
- package/lib/module/utils/emitter/EventEmitter.js.map +1 -1
- package/lib/typescript/classes/HMSInteractivityCenter.d.ts +35 -0
- package/lib/typescript/classes/HMSInteractivityEncoder.d.ts +4 -0
- package/lib/typescript/classes/HMSPermissions.d.ts +4 -0
- package/lib/typescript/classes/HMSPollsListenerActions.d.ts +3 -0
- package/lib/typescript/classes/HMSSDK.d.ts +3 -0
- package/lib/typescript/classes/polls/HMSPoll.d.ts +81 -0
- package/lib/typescript/classes/polls/HMSPollCategory.d.ts +10 -0
- package/lib/typescript/classes/polls/HMSPollCreateParams.d.ts +6 -0
- package/lib/typescript/classes/polls/HMSPollQuestion.d.ts +61 -0
- package/lib/typescript/classes/polls/HMSPollQuestionAnswer.d.ts +17 -0
- package/lib/typescript/classes/polls/HMSPollQuestionCreateParams.d.ts +25 -0
- package/lib/typescript/classes/polls/HMSPollQuestionOption.d.ts +21 -0
- package/lib/typescript/classes/polls/HMSPollQuestionOptionCreateParams.d.ts +3 -0
- package/lib/typescript/classes/polls/HMSPollQuestionQuizOptionCreateParams.d.ts +4 -0
- package/lib/typescript/classes/polls/HMSPollQuestionResponse.d.ts +47 -0
- package/lib/typescript/classes/polls/HMSPollQuestionResponseCreateParams.d.ts +2 -0
- package/lib/typescript/classes/polls/HMSPollQuestionResponseResult.d.ts +17 -0
- package/lib/typescript/classes/polls/HMSPollQuestionResult.d.ts +29 -0
- package/lib/typescript/classes/polls/HMSPollQuestionType.d.ts +18 -0
- package/lib/typescript/classes/polls/HMSPollResponsePeerInfo.d.ts +21 -0
- package/lib/typescript/classes/polls/HMSPollResult.d.ts +22 -0
- package/lib/typescript/classes/polls/HMSPollState.d.ts +14 -0
- package/lib/typescript/classes/polls/HMSPollType.d.ts +4 -0
- package/lib/typescript/classes/polls/HMSPollUpdateType.d.ts +5 -0
- package/lib/typescript/classes/polls/HMSPollUserTrackingMode.d.ts +14 -0
- package/lib/typescript/hooks/polls.d.ts +3 -0
- package/lib/typescript/index.d.ts +8 -0
- package/lib/typescript/stores/hms-interactivity-store.d.ts +9 -0
- package/lib/typescript/stores/hms-polls-slice.d.ts +5 -0
- package/lib/typescript/stores/types.d.ts +6 -0
- package/lib/typescript/utils/emitter/EventEmitter.d.ts +7 -0
- package/package.json +1 -1
- package/sdk-versions.json +2 -2
- package/src/classes/HMSInteractivityCenter.ts +126 -0
- package/src/classes/HMSInteractivityEncoder.ts +29 -0
- package/src/classes/HMSPermissions.ts +6 -0
- package/src/classes/HMSPollsListenerActions.ts +3 -0
- package/src/classes/HMSSDK.tsx +10 -0
- package/src/classes/polls/HMSPoll.ts +108 -0
- package/src/classes/polls/HMSPollCategory.ts +11 -0
- package/src/classes/polls/HMSPollCreateParams.ts +19 -0
- package/src/classes/polls/HMSPollQuestion.ts +92 -0
- package/src/classes/polls/HMSPollQuestionAnswer.ts +29 -0
- package/src/classes/polls/HMSPollQuestionCreateParams.ts +36 -0
- package/src/classes/polls/HMSPollQuestionOption.ts +24 -0
- package/src/classes/polls/HMSPollQuestionOptionCreateParams.ts +8 -0
- package/src/classes/polls/HMSPollQuestionQuizOptionCreateParams.ts +6 -0
- package/src/classes/polls/HMSPollQuestionResponse.ts +72 -0
- package/src/classes/polls/HMSPollQuestionResponseCreateParams.ts +6 -0
- package/src/classes/polls/HMSPollQuestionResponseResult.ts +19 -0
- package/src/classes/polls/HMSPollQuestionResult.ts +41 -0
- package/src/classes/polls/HMSPollQuestionType.ts +21 -0
- package/src/classes/polls/HMSPollResponsePeerInfo.ts +24 -0
- package/src/classes/polls/HMSPollResult.ts +26 -0
- package/src/classes/polls/HMSPollState.ts +16 -0
- package/src/classes/polls/HMSPollType.ts +4 -0
- package/src/classes/polls/HMSPollUpdateType.ts +5 -0
- package/src/classes/polls/HMSPollUserTrackingMode.ts +16 -0
- package/src/hooks/polls.ts +14 -0
- package/src/index.ts +9 -0
- package/src/stores/hms-interactivity-store.ts +18 -0
- package/src/stores/hms-polls-slice.ts +20 -0
- package/src/stores/types.ts +20 -3
- package/src/utils/emitter/EventEmitter.ts +26 -0
package/android/local.properties
CHANGED
|
@@ -1 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
## This file must *NOT* be checked into Version Control Systems,
|
|
2
|
+
# as it contains information specific to your local configuration.
|
|
3
|
+
#
|
|
4
|
+
# Location of the SDK. This is only used by Gradle.
|
|
5
|
+
# For customization when using a Version Control System, please read the
|
|
6
|
+
# header note.
|
|
7
|
+
#Mon Nov 14 20:51:00 IST 2022
|
|
8
|
+
sdk.dir=/Users/jatinnagar/Library/Android/sdk
|
|
@@ -340,6 +340,8 @@ object HMSDecoder {
|
|
|
340
340
|
permissions.putBoolean("hlsStreaming", hmsPermissions.hlsStreaming)
|
|
341
341
|
permissions.putBoolean("rtmpStreaming", hmsPermissions.rtmpStreaming)
|
|
342
342
|
permissions.putBoolean("changeRole", hmsPermissions.changeRole)
|
|
343
|
+
permissions.putBoolean("pollRead", hmsPermissions.pollRead)
|
|
344
|
+
permissions.putBoolean("pollWrite", hmsPermissions.pollWrite)
|
|
343
345
|
}
|
|
344
346
|
return permissions
|
|
345
347
|
}
|
|
@@ -688,7 +688,7 @@ class HMSManager(reactContext: ReactApplicationContext) :
|
|
|
688
688
|
hms?.getAuthTokenByRoomCode(data, promise)
|
|
689
689
|
}
|
|
690
690
|
|
|
691
|
-
// region
|
|
691
|
+
// region Picture-In-Picture Mode Action handing
|
|
692
692
|
private val pipReceiver by lazy {
|
|
693
693
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
694
694
|
PipActionReceiver(
|
|
@@ -1342,6 +1342,64 @@ class HMSManager(reactContext: ReactApplicationContext) :
|
|
|
1342
1342
|
.emit(event, data)
|
|
1343
1343
|
}
|
|
1344
1344
|
|
|
1345
|
+
// region Polls
|
|
1346
|
+
@ReactMethod
|
|
1347
|
+
fun quickStartPoll(
|
|
1348
|
+
data: ReadableMap,
|
|
1349
|
+
promise: Promise?,
|
|
1350
|
+
) {
|
|
1351
|
+
val rnSDK = HMSHelper.getHms(data, hmsCollection)
|
|
1352
|
+
rnSDK?.let { sdk ->
|
|
1353
|
+
sdk.interactivityCenter?.let { center ->
|
|
1354
|
+
center.quickStartPoll(data, promise)
|
|
1355
|
+
return
|
|
1356
|
+
}
|
|
1357
|
+
}
|
|
1358
|
+
promise?.reject(
|
|
1359
|
+
"6004",
|
|
1360
|
+
"HMS SDK not initialized",
|
|
1361
|
+
)
|
|
1362
|
+
}
|
|
1363
|
+
|
|
1364
|
+
@ReactMethod
|
|
1365
|
+
fun addResponseOnPollQuestion(
|
|
1366
|
+
data: ReadableMap,
|
|
1367
|
+
promise: Promise?,
|
|
1368
|
+
) {
|
|
1369
|
+
val rnSDK = HMSHelper.getHms(data, hmsCollection)
|
|
1370
|
+
rnSDK?.let { sdk ->
|
|
1371
|
+
sdk.interactivityCenter?.let { center ->
|
|
1372
|
+
center.addResponseOnPollQuestion(data, promise)
|
|
1373
|
+
return
|
|
1374
|
+
}
|
|
1375
|
+
}
|
|
1376
|
+
promise?.reject(
|
|
1377
|
+
"6004",
|
|
1378
|
+
"HMS SDK not initialized",
|
|
1379
|
+
)
|
|
1380
|
+
}
|
|
1381
|
+
|
|
1382
|
+
@ReactMethod
|
|
1383
|
+
fun stopPoll(
|
|
1384
|
+
data: ReadableMap,
|
|
1385
|
+
promise: Promise?,
|
|
1386
|
+
) {
|
|
1387
|
+
val rnSDK = HMSHelper.getHms(data, hmsCollection)
|
|
1388
|
+
rnSDK?.let { sdk ->
|
|
1389
|
+
sdk.interactivityCenter?.let { center ->
|
|
1390
|
+
center.stop(data, promise)
|
|
1391
|
+
return
|
|
1392
|
+
}
|
|
1393
|
+
}
|
|
1394
|
+
promise?.reject(
|
|
1395
|
+
"6004",
|
|
1396
|
+
"HMS SDK not initialized",
|
|
1397
|
+
)
|
|
1398
|
+
}
|
|
1399
|
+
// endregion
|
|
1400
|
+
|
|
1401
|
+
// region ActivityLifecycleCallbacks
|
|
1402
|
+
|
|
1345
1403
|
override fun onActivityCreated(
|
|
1346
1404
|
activity: Activity,
|
|
1347
1405
|
savedInstanceState: Bundle?,
|
|
@@ -1377,7 +1435,8 @@ class HMSManager(reactContext: ReactApplicationContext) :
|
|
|
1377
1435
|
}
|
|
1378
1436
|
}
|
|
1379
1437
|
} catch (e: Exception) {
|
|
1380
|
-
// Log.d("error", e.message)
|
|
1381
1438
|
}
|
|
1382
1439
|
}
|
|
1440
|
+
|
|
1441
|
+
// endregion
|
|
1383
1442
|
}
|
|
@@ -49,12 +49,14 @@ class HMSRNSDK(
|
|
|
49
49
|
private var audioMixingMode: AudioMixingMode = AudioMixingMode.TALK_AND_MUSIC
|
|
50
50
|
private var id: String = sdkId
|
|
51
51
|
private var self = this
|
|
52
|
-
|
|
52
|
+
var eventsEnableStatus = mutableMapOf<String, Boolean>()
|
|
53
53
|
private var sessionStore: HmsSessionStore? = null
|
|
54
54
|
private val keyChangeObservers = mutableMapOf<String, HMSKeyChangeListener?>()
|
|
55
55
|
private val peerListIterators = mutableMapOf<String, PeerListIterator>()
|
|
56
56
|
private var roomMutedLocally = false
|
|
57
57
|
|
|
58
|
+
var interactivityCenter: HMSRNInteractivityCenter? = null
|
|
59
|
+
|
|
58
60
|
init {
|
|
59
61
|
val builder = HMSSDK.Builder(reactApplicationContext)
|
|
60
62
|
if (HMSHelper.areAllRequiredKeysAvailable(data, arrayOf(Pair("trackSettings", "Map")))) {
|
|
@@ -85,6 +87,10 @@ class HMSRNSDK(
|
|
|
85
87
|
}
|
|
86
88
|
|
|
87
89
|
this.hmsSDK = builder.build()
|
|
90
|
+
|
|
91
|
+
hmsSDK?.let {
|
|
92
|
+
interactivityCenter = HMSRNInteractivityCenter(it, this)
|
|
93
|
+
}
|
|
88
94
|
}
|
|
89
95
|
|
|
90
96
|
private fun emitCustomError(message: String) {
|
|
@@ -1698,6 +1704,7 @@ class HMSRNSDK(
|
|
|
1698
1704
|
if (eventsEnableStatus["ON_AUDIO_DEVICE_CHANGED"] != true) {
|
|
1699
1705
|
return
|
|
1700
1706
|
}
|
|
1707
|
+
|
|
1701
1708
|
val data: WritableMap = Arguments.createMap()
|
|
1702
1709
|
data.putString("device", selectedAudioDevice.name)
|
|
1703
1710
|
data.putArray("audioDevicesList", HMSHelper.getAudioDevicesSet(availableAudioDevices))
|
|
@@ -1705,8 +1712,8 @@ class HMSRNSDK(
|
|
|
1705
1712
|
delegate.emitEvent("ON_AUDIO_DEVICE_CHANGED", data)
|
|
1706
1713
|
}
|
|
1707
1714
|
|
|
1708
|
-
override fun onError(
|
|
1709
|
-
self.emitHMSError(
|
|
1715
|
+
override fun onError(e: HMSException) {
|
|
1716
|
+
self.emitHMSError(e)
|
|
1710
1717
|
}
|
|
1711
1718
|
},
|
|
1712
1719
|
)
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
package com.reactnativehmssdk.Interactivity
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.Arguments
|
|
4
|
+
import com.facebook.react.bridge.ReadableArray
|
|
5
|
+
import com.facebook.react.bridge.WritableArray
|
|
6
|
+
import com.facebook.react.bridge.WritableMap
|
|
7
|
+
import com.reactnativehmssdk.HMSDecoder
|
|
8
|
+
import live.hms.video.polls.models.*
|
|
9
|
+
import live.hms.video.polls.models.answer.HMSPollQuestionAnswer
|
|
10
|
+
import live.hms.video.polls.models.answer.HmsPollAnswer
|
|
11
|
+
import live.hms.video.polls.models.answer.PollAnswerItem
|
|
12
|
+
import live.hms.video.polls.models.answer.PollAnswerResponse
|
|
13
|
+
import live.hms.video.polls.models.question.HMSPollQuestion
|
|
14
|
+
import live.hms.video.polls.models.question.HMSPollQuestionOption
|
|
15
|
+
import live.hms.video.polls.network.PollResultsDisplay
|
|
16
|
+
|
|
17
|
+
object HMSInteractivityDecoder {
|
|
18
|
+
fun getPollUpdateType(hmsPollUpdateType: HMSPollUpdateType): Int {
|
|
19
|
+
return when (hmsPollUpdateType) {
|
|
20
|
+
HMSPollUpdateType.started -> 0
|
|
21
|
+
HMSPollUpdateType.resultsupdated -> 1
|
|
22
|
+
HMSPollUpdateType.stopped -> 2
|
|
23
|
+
else -> {
|
|
24
|
+
0
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
fun getPoll(poll: HmsPoll): WritableMap {
|
|
30
|
+
val data = Arguments.createMap()
|
|
31
|
+
|
|
32
|
+
data.putBoolean("anonymous", poll.anonymous)
|
|
33
|
+
data.putInt("type", poll.category.ordinal)
|
|
34
|
+
poll.duration?.let { data.putDouble("duration", it.toDouble()) }
|
|
35
|
+
data.putString("pollId", poll.pollId)
|
|
36
|
+
data.putArray("rolesThatCanViewResponses", HMSDecoder.getAllRoles(poll.rolesThatCanViewResponses))
|
|
37
|
+
data.putArray("rolesThatCanVote", HMSDecoder.getAllRoles(poll.rolesThatCanVote))
|
|
38
|
+
data.putInt("state", getPollStateOrdinal(poll.state))
|
|
39
|
+
data.putString("title", poll.title)
|
|
40
|
+
|
|
41
|
+
poll.createdBy?.let {
|
|
42
|
+
data.putMap("createdBy", HMSDecoder.getHmsPeerSubset(it))
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
poll.mode?.let {
|
|
46
|
+
data.putInt("mode", getPollMode(poll))
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
poll.questionCount?.let {
|
|
50
|
+
data.putInt("questionCount", it)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
poll.questions?.let {
|
|
54
|
+
data.putArray("questions", getPollQuestions(it))
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
poll.result?.let {
|
|
58
|
+
data.putMap("result", getPollResult(it))
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
data.putString("startedAt", poll.startedAt.toString())
|
|
62
|
+
|
|
63
|
+
poll.stoppedAt?.let {
|
|
64
|
+
data.putString("stoppedAt", it.toString())
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
poll.startedBy?.let {
|
|
68
|
+
data.putMap("startedBy", HMSDecoder.getHmsPeerSubset(it))
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return data
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
private fun getPollStateOrdinal(pollState: HmsPollState): Int {
|
|
75
|
+
return when (pollState) {
|
|
76
|
+
HmsPollState.CREATED -> 0
|
|
77
|
+
HmsPollState.STARTED -> 1
|
|
78
|
+
HmsPollState.STOPPED -> 2
|
|
79
|
+
else -> 0
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
private fun getPollMode(poll: HmsPoll): Int {
|
|
84
|
+
return when (poll.mode) {
|
|
85
|
+
HmsPollUserTrackingMode.PEER_ID -> 0
|
|
86
|
+
HmsPollUserTrackingMode.USER_ID -> 1
|
|
87
|
+
HmsPollUserTrackingMode.USERNAME -> 2
|
|
88
|
+
else -> {
|
|
89
|
+
0
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
private fun getPollQuestions(questions: List<HMSPollQuestion>): WritableArray {
|
|
95
|
+
val data = Arguments.createArray()
|
|
96
|
+
|
|
97
|
+
for (question in questions) {
|
|
98
|
+
data.pushMap(getPollQuestion(question))
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return data
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
private fun getPollQuestion(question: HMSPollQuestion): WritableMap {
|
|
105
|
+
val data = Arguments.createMap()
|
|
106
|
+
|
|
107
|
+
data.putInt("index", question.questionID)
|
|
108
|
+
|
|
109
|
+
question.duration.let { data.putDouble("duration", it.toDouble()) }
|
|
110
|
+
|
|
111
|
+
question.myResponses.let {
|
|
112
|
+
data.putArray("myResponses", getPollAnswers(it))
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
data.putBoolean("skippable", question.canSkip)
|
|
116
|
+
|
|
117
|
+
data.putString("text", question.text)
|
|
118
|
+
|
|
119
|
+
data.putInt("type", question.type.ordinal)
|
|
120
|
+
|
|
121
|
+
data.putBoolean("voted", question.voted)
|
|
122
|
+
|
|
123
|
+
data.putInt("weight", question.weight)
|
|
124
|
+
|
|
125
|
+
question.correctAnswer?.let {
|
|
126
|
+
data.putMap("answer", getPollQuestionAnswer(it))
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
question.answerLongMinLength?.let {
|
|
130
|
+
data.putDouble("answerMaxLen", it.toDouble())
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
question.answerShortMinLength?.let {
|
|
134
|
+
data.putDouble("answerMinLen", it.toDouble())
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
question.options?.let {
|
|
138
|
+
data.putArray("options", getPollQuestionOptions(it))
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
return data
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
private fun getPollQuestionOptions(options: List<HMSPollQuestionOption>): WritableArray {
|
|
145
|
+
val data = Arguments.createArray()
|
|
146
|
+
|
|
147
|
+
for (option in options) {
|
|
148
|
+
data.pushMap(getPollQuestionOption(option))
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
return data
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
private fun getPollQuestionOption(option: HMSPollQuestionOption): WritableMap {
|
|
155
|
+
val data = Arguments.createMap()
|
|
156
|
+
|
|
157
|
+
data.putString("text", option.text)
|
|
158
|
+
data.putInt("index", option.index)
|
|
159
|
+
data.putInt("voteCount", option.voteCount.toInt())
|
|
160
|
+
option.weight?.let { data.putInt("weight", it) }
|
|
161
|
+
|
|
162
|
+
return data
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
private fun getPollQuestionAnswer(answer: HMSPollQuestionAnswer): WritableMap {
|
|
166
|
+
val data = Arguments.createMap()
|
|
167
|
+
|
|
168
|
+
answer.option?.let { data.putInt("option", it) }
|
|
169
|
+
|
|
170
|
+
answer.options?.let { data.putArray("options", convertListToReadableArray(it)) }
|
|
171
|
+
|
|
172
|
+
data.putBoolean("hidden", answer.hidden)
|
|
173
|
+
|
|
174
|
+
return data
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
private fun getPollAnswers(answers: List<HmsPollAnswer>): WritableArray {
|
|
178
|
+
val data = Arguments.createArray()
|
|
179
|
+
|
|
180
|
+
for (answer in answers) {
|
|
181
|
+
data.pushMap(getPollAnswer(answer))
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
return data
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
private fun getPollAnswer(answer: HmsPollAnswer): WritableMap {
|
|
188
|
+
val data = Arguments.createMap()
|
|
189
|
+
|
|
190
|
+
answer.durationMillis.let { data.putDouble("duration", (it * 1000).toDouble()) }
|
|
191
|
+
|
|
192
|
+
data.putInt("option", answer.selectedOption)
|
|
193
|
+
|
|
194
|
+
data.putInt("questionId", answer.questionId)
|
|
195
|
+
|
|
196
|
+
data.putBoolean("skipped", answer.skipped)
|
|
197
|
+
|
|
198
|
+
data.putString("text", answer.answerText)
|
|
199
|
+
|
|
200
|
+
data.putInt("type", answer.questionType.ordinal)
|
|
201
|
+
|
|
202
|
+
data.putBoolean("update", answer.update)
|
|
203
|
+
|
|
204
|
+
answer.selectedOptions?.let {
|
|
205
|
+
data.putArray("options", convertListToReadableArray(it))
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
return data
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
private fun getPollResult(result: PollResultsDisplay): WritableMap {
|
|
212
|
+
val data = Arguments.createMap()
|
|
213
|
+
|
|
214
|
+
result.totalResponses?.let {
|
|
215
|
+
data.putDouble("totalResponse", it.toDouble())
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
result.votingUsers?.let {
|
|
219
|
+
data.putDouble("userCount", it.toDouble())
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
result.totalDistinctUsers?.let {
|
|
223
|
+
data.putDouble("maxUserCount", it.toDouble())
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
result.questions.let {
|
|
227
|
+
data.putArray("questions", getPollStatsQuestion(it))
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
return data
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
private fun getPollStatsQuestion(questions: List<PollStatsQuestions>): WritableArray {
|
|
234
|
+
val data = Arguments.createArray()
|
|
235
|
+
|
|
236
|
+
for (question in questions) {
|
|
237
|
+
data.pushMap(getPollStatsQuestion(question))
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
return data
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
private fun getPollStatsQuestion(question: PollStatsQuestions): WritableMap {
|
|
244
|
+
val data = Arguments.createMap()
|
|
245
|
+
|
|
246
|
+
data.putInt("question", question.index)
|
|
247
|
+
|
|
248
|
+
data.putInt("type", question.questionType.ordinal)
|
|
249
|
+
|
|
250
|
+
question.correct?.let { data.putDouble("correctVotes", it.toDouble()) }
|
|
251
|
+
|
|
252
|
+
data.putDouble("skippedVotes", question.skipped.toDouble())
|
|
253
|
+
|
|
254
|
+
data.putInt("totalVotes", question.attemptedTimes)
|
|
255
|
+
|
|
256
|
+
question.options?.let {
|
|
257
|
+
data.putArray("optionVoteCounts", convertLongListToReadableArray(it))
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
return data
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
private fun convertLongListToReadableArray(list: List<Long>): ReadableArray {
|
|
264
|
+
val readableArray = Arguments.createArray()
|
|
265
|
+
list.forEach {
|
|
266
|
+
readableArray.pushInt(it.toInt())
|
|
267
|
+
}
|
|
268
|
+
return readableArray
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
private fun convertListToReadableArray(list: List<Int>): ReadableArray {
|
|
272
|
+
val readableArray = Arguments.createArray()
|
|
273
|
+
list.forEach {
|
|
274
|
+
readableArray.pushInt(it.toInt())
|
|
275
|
+
}
|
|
276
|
+
return readableArray
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/*
|
|
280
|
+
|
|
281
|
+
static func getHMSPollQuestionResponseResults(_ hmsPollQuestionResponseResults: [HMSPollQuestionResponseResult]) -> [[String: AnyHashable]] {
|
|
282
|
+
var results = [[String: AnyHashable]]()
|
|
283
|
+
|
|
284
|
+
hmsPollQuestionResponseResults.forEach { result in
|
|
285
|
+
results.append(getHMSPollQuestionResponseResult(result))
|
|
286
|
+
}
|
|
287
|
+
return results
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
static func getHMSPollQuestionResponseResult(_ hmsPollQuestionResponseResult: HMSPollQuestionResponseResult) -> [String: AnyHashable] {
|
|
291
|
+
var result: [String: AnyHashable] = [
|
|
292
|
+
"question": hmsPollQuestionResponseResult.question
|
|
293
|
+
]
|
|
294
|
+
if let correct = hmsPollQuestionResponseResult.correct {
|
|
295
|
+
result["correct"] = correct
|
|
296
|
+
}
|
|
297
|
+
if let error = hmsPollQuestionResponseResult.error {
|
|
298
|
+
result["error"] = error.localizedDescription
|
|
299
|
+
}
|
|
300
|
+
return result
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
*/
|
|
304
|
+
fun getHMSPollQuestionResponseResults(hmsPollQuestionResponseResults: PollAnswerResponse): WritableArray {
|
|
305
|
+
val results = Arguments.createArray()
|
|
306
|
+
|
|
307
|
+
hmsPollQuestionResponseResults.result.forEach { result ->
|
|
308
|
+
results.pushMap(getHMSPollQuestionResponseResult(result))
|
|
309
|
+
}
|
|
310
|
+
return results
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
private fun getHMSPollQuestionResponseResult(hmsPollQuestionResponseResult: PollAnswerItem): WritableMap {
|
|
314
|
+
val result = Arguments.createMap()
|
|
315
|
+
|
|
316
|
+
result.putInt("question", hmsPollQuestionResponseResult.questionIndex)
|
|
317
|
+
|
|
318
|
+
hmsPollQuestionResponseResult.correct.let {
|
|
319
|
+
result.putBoolean("correct", it)
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
hmsPollQuestionResponseResult.error?.let {
|
|
323
|
+
result.putString("error", it.localizedMessage)
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
return result
|
|
327
|
+
}
|
|
328
|
+
}
|