Skip to content

Commit

Permalink
Release 1.10.7: Develop to main (#1399)
Browse files Browse the repository at this point in the history
# Description

- Release 1.10.7: Develop to main

### Pre-launch Checklist

- [x] The [Documentation] is updated accordingly, or this PR doesn't
require it.
- [x] I have updated the `ExampleAppChangelog.txt` file with relevant
changes.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I added new tests to check the change I am making, or this PR is
test-exempt.
- [x] All existing and new tests are passing.

<!-- Links -->

[Documentation]: https://www.100ms.live/docs
  • Loading branch information
ygit committed Jul 1, 2024
2 parents 6072fa4 + 6c96799 commit 025704b
Show file tree
Hide file tree
Showing 74 changed files with 4,646 additions and 3,421 deletions.
17 changes: 9 additions & 8 deletions .trunk/trunk.yaml
Original file line number Diff line number Diff line change
@@ -1,28 +1,29 @@
version: 0.1
cli:
version: 1.22.1
version: 1.22.2
plugins:
sources:
- id: trunk
ref: v1.5.0
ref: v1.6.0
uri: https://github.com/trunk-io/plugins
lint:
disabled:
- osv-scanner
enabled:
- vale@3.6.0
- dotenv-linter@3.3.0
- actionlint@1.7.1
- prettier@3.2.5
- prettier@3.3.2
- swiftlint@0.54.0
- checkov@3.2.114
- trivy@0.51.4
- trufflehog@3.77.0
- checkov@3.2.145
- trivy@0.52.2
- trufflehog@3.78.2
- oxipng@9.1.1
- yamllint@1.35.1
- ktlint@1.2.1
- ktlint@1.3.0
- svgo@3.3.2
- shfmt@3.6.0
- gitleaks@8.18.2
- gitleaks@8.18.4
- shellcheck@0.10.0
- git-diff-check
- markdownlint@0.41.0
Expand Down
5 changes: 0 additions & 5 deletions packages/react-native-hms/android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -57,11 +57,6 @@ android {
versionName "1.0"
}

buildTypes {
release {
minifyEnabled true
}
}
lintOptions {
disable 'GradleCompatible'
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import live.hms.video.sdk.models.enums.HMSPeerUpdate
import live.hms.video.sdk.models.enums.HMSRoomUpdate
import live.hms.video.sdk.models.role.*
import live.hms.video.sdk.models.trackchangerequest.HMSChangeTrackStateRequest
import live.hms.video.sdk.transcripts.HmsTranscript

object HMSDecoder {
private var restrictRoleData = mutableMapOf<String, Boolean>()
Expand Down Expand Up @@ -83,6 +84,9 @@ object HMSDecoder {
HMSRoomUpdate.ROOM_UNMUTED -> {
print("ROOM_UNMUTED received")
}
HMSRoomUpdate.TRANSCRIPTIONS_UPDATED -> {
room.putArray("transcriptions", getTranscriptionsList(hmsRoom.transcriptions))
}
else -> {
print("Unknown Room Update Type received")
}
Expand Down Expand Up @@ -148,6 +152,8 @@ object HMSDecoder {
}

room.putBoolean("isLargeRoom", hmsRoom.isLargeRoom)

room.putArray("transcriptions", getTranscriptionsList(hmsRoom.transcriptions))
}
return room
}
Expand Down Expand Up @@ -352,6 +358,17 @@ object HMSDecoder {
whiteboardPermissionMap.putBoolean("write", whiteBoardPermission.write)
}
permissions.putMap("whiteboard", whiteboardPermissionMap)

val transcriptionsPermissionArray: WritableArray = Arguments.createArray()
hmsPermissions.transcriptions.forEach { hmsTranscriptionPermissions ->
val transcriptionsPermissions: WritableMap = Arguments.createMap()
transcriptionsPermissions.putBoolean("admin", hmsTranscriptionPermissions.admin)
hmsTranscriptionPermissions.mode?.let {
transcriptionsPermissions.putString("mode", getTranscriptionsMode(it))
}
transcriptionsPermissionArray.pushMap(transcriptionsPermissions)
}
permissions.putArray("transcriptions", transcriptionsPermissionArray)
}
return permissions
}
Expand Down Expand Up @@ -1047,4 +1064,77 @@ object HMSDecoder {

return writableMap
}

fun getTranscriptionsList(transcriptionsList: List<Transcriptions>): WritableArray {
val data: WritableArray = Arguments.createArray()
transcriptionsList.forEach {
data.pushMap(getTranscriptions(it))
}
return data
}

fun getTranscriptions(transcriptions: Transcriptions): WritableMap {
val data: WritableMap = Arguments.createMap()
transcriptions.error?.let { error ->
val errorData: WritableMap = Arguments.createMap()
error.code?.let {
errorData.putInt("code", it)
}
error.message?.let {
errorData.putString("message", it)
}
data.putMap("error", errorData)
}
transcriptions.state?.let {
data.putString("state", getTranscriptionsState(it))
}
transcriptions.mode?.let {
data.putString("mode", getTranscriptionsMode(it))
}
transcriptions.startedAt?.let {
data.putString("startedAt", it.toString())
}
transcriptions.initialisedAt?.let {
data.putString("initialisedAt", it.toString())
}
transcriptions.stoppedAt?.let {
data.putString("stoppedAt", it.toString())
}
transcriptions.updatedAt?.let {
data.putString("updatedAt", it.toString())
}
return data
}

fun getTranscriptionsMode(mode: TranscriptionsMode): String =
when (mode) {
TranscriptionsMode.CAPTION -> "CAPTION"
TranscriptionsMode.LIVE -> "LIVE"
}

fun getTranscriptionsState(state: TranscriptionState): String =
when (state) {
TranscriptionState.FAILED -> "FAILED"
TranscriptionState.INITIALIZED -> "INITIALIZED"
TranscriptionState.STARTED -> "STARTED"
TranscriptionState.STOPPED -> "STOPPED"
}

fun getHmsTranscripts(transcripts: List<HmsTranscript>): WritableArray {
val data: WritableArray = Arguments.createArray()
transcripts.forEach {
data.pushMap(getHmsTranscript(it))
}
return data
}

fun getHmsTranscript(transcript: HmsTranscript): WritableMap {
val data: WritableMap = Arguments.createMap()
data.putString("transcript", transcript.transcript)
data.putString("peerId", transcript.peerId)
data.putInt("end", transcript.end)
data.putInt("start", transcript.start)
data.putBoolean("isFinal", transcript.isFinal)
return data
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@ import live.hms.video.sdk.models.enums.HMSStreamingState
import java.util.concurrent.TimeUnit

@SuppressLint("ViewConstructor")
class HMSHLSPlayer(context: ReactContext) : FrameLayout(context) {
class HMSHLSPlayer(
context: ReactContext,
) : FrameLayout(context) {
private var playerView: PlayerView? = null // Exoplayer View
private var hmsHlsPlayer: HmsHlsPlayer? = null // 100ms HLS Player
private var hmssdkInstance: HMSSDK? = null
Expand Down Expand Up @@ -154,7 +156,11 @@ class HMSHLSPlayer(context: ReactContext) : FrameLayout(context) {
override fun onCues(cueGroup: CueGroup) {
super.onCues(cueGroup)
if (!shouldSendCaptionsToJS) return
val ccText = cueGroup.cues.firstOrNull()?.text?.toString()
val ccText =
cueGroup.cues
.firstOrNull()
?.text
?.toString()
sendHLSPlayerCuesEventToJS(ccText)
}
},
Expand Down Expand Up @@ -243,7 +249,12 @@ class HMSHLSPlayer(context: ReactContext) : FrameLayout(context) {
fun getPlayerDurationDetails(requestId: Int) {
val data: WritableMap = Arguments.createMap()
hmsHlsPlayer?.getNativePlayer()?.let { exoPlayer ->
data.putInt("rollingWindowTime", exoPlayer.seekParameters.toleranceAfterUs.div(1000).toInt())
data.putInt(
"rollingWindowTime",
exoPlayer.seekParameters.toleranceAfterUs
.div(1000)
.toInt(),
)
data.putInt("streamDuration", exoPlayer.duration.toInt())
}
sendHLSDataRequestEventToJS(requestId, data)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@ import com.facebook.react.uimanager.annotations.ReactProp
class HMSHLSPlayerManager : SimpleViewManager<HMSHLSPlayer>() {
private var reactContext: ThemedReactContext? = null

override fun getName(): String {
return REACT_CLASS
}
override fun getName(): String = REACT_CLASS

override fun createViewInstance(reactContext: ThemedReactContext): HMSHLSPlayer {
this.reactContext = reactContext
Expand Down Expand Up @@ -98,8 +96,9 @@ class HMSHLSPlayerManager : SimpleViewManager<HMSHLSPlayer>() {
}
}

override fun getCommandsMap(): MutableMap<String, Int>? {
return MapBuilder.builder<String, Int>()
override fun getCommandsMap(): MutableMap<String, Int>? =
MapBuilder
.builder<String, Int>()
.put("play", 10)
.put("stop", 20)
.put("pause", 30)
Expand All @@ -114,7 +113,6 @@ class HMSHLSPlayerManager : SimpleViewManager<HMSHLSPlayer>() {
.put("disableClosedCaption", 120)
.put("getPlayerDurationDetails", 130)
.build()
}

@ReactProp(name = "url")
fun setStreamURL(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,8 @@ object HMSHelper {
suspend fun getRemotePeerFromPeerId(
peerId: String?,
hmsSDK: HMSSDK?,
): HMSRemotePeer? {
return suspendCoroutine {
): HMSRemotePeer? =
suspendCoroutine {
val room = hmsSDK?.getRoom()

if (peerId != null && room != null) {
Expand Down Expand Up @@ -144,7 +144,6 @@ object HMSHelper {
it.resume(null)
}
}
}

fun getRolesFromRoleNames(
targetedRoles: ArrayList<String>?,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,10 @@ import live.hms.video.factories.noisecancellation.AvailabilityStatus
import java.util.UUID

@ReactModule(name = REACT_CLASS)
class HMSManager(reactContext: ReactApplicationContext) :
ReactContextBaseJavaModule(reactContext), Application.ActivityLifecycleCallbacks {
class HMSManager(
reactContext: ReactApplicationContext,
) : ReactContextBaseJavaModule(reactContext),
Application.ActivityLifecycleCallbacks {
companion object {
const val REACT_CLASS = "HMSManager"
var hmsCollection = mutableMapOf<String, HMSRNSDK>()
Expand Down Expand Up @@ -78,13 +80,9 @@ class HMSManager(reactContext: ReactApplicationContext) :
}
}

override fun getName(): String {
return "HMSManager"
}
override fun getName(): String = "HMSManager"

fun getHmsInstance(): MutableMap<String, HMSRNSDK> {
return hmsCollection
}
fun getHmsInstance(): MutableMap<String, HMSRNSDK> = hmsCollection

private fun setupPip() {
if (emitter == null) {
Expand Down Expand Up @@ -957,7 +955,8 @@ class HMSManager(reactContext: ReactApplicationContext) :
if (config.showEndButton) {
pipRemoteActionsList.add(
android.app.RemoteAction(
android.graphics.drawable.Icon.createWithResource(reactApplicationContext, R.drawable.ic_call_end_24),
android.graphics.drawable.Icon
.createWithResource(reactApplicationContext, R.drawable.ic_call_end_24),
PipActionReceiver.PIPActions.endMeet.title,
PipActionReceiver.PIPActions.endMeet.description,
PendingIntent.getBroadcast(
Expand Down Expand Up @@ -1607,6 +1606,24 @@ class HMSManager(reactContext: ReactApplicationContext) :
}
// endregion

// region Webrtc Transcriptions
@ReactMethod
fun handleRealTimeTranscription(
data: ReadableMap,
promise: Promise?,
) {
val rnSDK =
HMSHelper.getHms(data, hmsCollection) ?: run {
promise?.reject(
"6004",
"RN HMS SDK not initialized",
)
return
}
rnSDK.handleRealTimeTranscription(data, promise)
}
// endregion

// region Warning on JS side
@ReactMethod
fun addListener(eventName: String) {
Expand Down
Loading

0 comments on commit 025704b

Please sign in to comment.