Skip to content

Commit dbf3855

Browse files
authored
Update HLS url on successful startHLS response (#757)
* Update HLS url on successful startHLS response * fix spotless & api-dump --------- Co-authored-by: kanat <>
1 parent e40ea36 commit dbf3855

File tree

4 files changed

+26
-3
lines changed

4 files changed

+26
-3
lines changed

stream-video-android-core/api/stream-video-android-core.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ public final class io/getstream/video/android/core/CallState {
155155
public final fun updateFromResponse (Lorg/openapitools/client/models/GoLiveResponse;)V
156156
public final fun updateFromResponse (Lorg/openapitools/client/models/JoinCallResponse;)V
157157
public final fun updateFromResponse (Lorg/openapitools/client/models/QueryMembersResponse;)V
158+
public final fun updateFromResponse (Lorg/openapitools/client/models/StartBroadcastingResponse;)V
158159
public final fun updateFromResponse (Lorg/openapitools/client/models/StopLiveResponse;)V
159160
public final fun updateFromResponse (Lorg/openapitools/client/models/UpdateCallResponse;)V
160161
public final fun updateParticipant (Lio/getstream/video/android/core/ParticipantState;)V

stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/Call.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,6 @@ public class Call(
174174
team: String? = null,
175175
ring: Boolean = false,
176176
notify: Boolean = false,
177-
178177
): Result<GetOrCreateCallResponse> {
179178
val response = if (members != null) {
180179
clientImpl.getOrCreateCallFullMembers(
@@ -560,6 +559,9 @@ public class Call(
560559

561560
suspend fun startHLS(): Result<Any> {
562561
return clientImpl.startBroadcasting(type, id)
562+
.onSuccess {
563+
state.updateFromResponse(it)
564+
}
563565
}
564566

565567
suspend fun stopHLS(): Result<Any> {

stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/CallState.kt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ import org.openapitools.client.models.CallStateResponseFields
8585
import org.openapitools.client.models.CallUpdatedEvent
8686
import org.openapitools.client.models.ConnectedEvent
8787
import org.openapitools.client.models.CustomVideoEvent
88+
import org.openapitools.client.models.EgressHLSResponse
8889
import org.openapitools.client.models.EgressResponse
8990
import org.openapitools.client.models.GetCallResponse
9091
import org.openapitools.client.models.GetOrCreateCallResponse
@@ -96,6 +97,7 @@ import org.openapitools.client.models.OwnCapability
9697
import org.openapitools.client.models.PermissionRequestEvent
9798
import org.openapitools.client.models.QueryMembersResponse
9899
import org.openapitools.client.models.ReactionResponse
100+
import org.openapitools.client.models.StartBroadcastingResponse
99101
import org.openapitools.client.models.StopLiveResponse
100102
import org.openapitools.client.models.UnblockedUserEvent
101103
import org.openapitools.client.models.UpdateCallResponse
@@ -1069,6 +1071,24 @@ public class CallState(
10691071
fun updateFromResponse(result: GoLiveResponse) {
10701072
updateFromResponse(result.call)
10711073
}
1074+
1075+
fun updateFromResponse(response: StartBroadcastingResponse) {
1076+
val curEgress = _egress.value
1077+
logger.d { "[updateFromResponse] response: $response, curEgress: $curEgress" }
1078+
val newEgress = curEgress?.copy(
1079+
broadcasting = true,
1080+
hls = curEgress.hls?.copy(
1081+
playlistUrl = response.playlistUrl,
1082+
) ?: EgressHLSResponse(playlistUrl = response.playlistUrl),
1083+
) ?: EgressResponse(
1084+
broadcasting = true,
1085+
rtmps = emptyList(),
1086+
hls = EgressHLSResponse(playlistUrl = response.playlistUrl),
1087+
)
1088+
logger.v { "[updateFromResponse] newEgress: $newEgress" }
1089+
_egress.value = newEgress
1090+
_broadcasting.value = true
1091+
}
10721092
}
10731093

10741094
private fun MemberResponse.toMemberState(): MemberState {

stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/StreamVideoImpl.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ import org.openapitools.client.models.SendEventRequest
9494
import org.openapitools.client.models.SendEventResponse
9595
import org.openapitools.client.models.SendReactionRequest
9696
import org.openapitools.client.models.SendReactionResponse
97+
import org.openapitools.client.models.StartBroadcastingResponse
9798
import org.openapitools.client.models.StopLiveResponse
9899
import org.openapitools.client.models.UnblockUserRequest
99100
import org.openapitools.client.models.UpdateCallMembersRequest
@@ -797,8 +798,7 @@ internal class StreamVideoImpl internal constructor(
797798
)
798799
}
799800
}
800-
801-
suspend fun startBroadcasting(type: String, id: String): Result<Unit> {
801+
suspend fun startBroadcasting(type: String, id: String): Result<StartBroadcastingResponse> {
802802
logger.d { "[startBroadcasting] callCid: $type $id" }
803803

804804
return wrapAPICall { connectionModule.api.startBroadcasting(type, id) }

0 commit comments

Comments
 (0)