Skip to content

Commit 429c751

Browse files
Introduce Join-Then-Ring Mechanism for Individual Call Members (#1574)
* 1. Code gen files updated for individual ringing-call * 1. update api files * 1.first commit * 1.second commit * 1.third commit * 1.third commit * Update ringing state for `joinAndRing` * ApiDump * 1. remove unnecessary code --------- Co-authored-by: Aleksandar Apostolov <[email protected]>
1 parent a0e6443 commit 429c751

37 files changed

+1593
-81
lines changed

demo-app/src/main/kotlin/io/getstream/video/android/ui/DogfoodingNavHost.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ fun AppNavHost(
9191
composable(AppScreens.DirectCallJoin.route) {
9292
val context = LocalContext.current
9393
DirectCallJoinScreen(
94-
navigateToDirectCall = { cid, members ->
94+
navigateToDirectCall = { cid, members, joinAndRing ->
9595
context.startActivity(
9696
StreamCallActivity.callIntent(
9797
action = NotificationHandler.ACTION_OUTGOING_CALL,
@@ -101,6 +101,7 @@ fun AppNavHost(
101101
leaveWhenLastInCall = true,
102102
context = context,
103103
cid = cid,
104+
joinAndRing = joinAndRing,
104105
members = members.split(","),
105106
clazz = CallActivity::class.java,
106107
),

demo-app/src/main/kotlin/io/getstream/video/android/ui/outgoing/DirectCallJoinScreen.kt

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import androidx.compose.foundation.layout.padding
3030
import androidx.compose.foundation.layout.size
3131
import androidx.compose.foundation.layout.width
3232
import androidx.compose.foundation.lazy.LazyColumn
33+
import androidx.compose.material.Checkbox
3334
import androidx.compose.material.CircularProgressIndicator
3435
import androidx.compose.material.RadioButton
3536
import androidx.compose.material.RadioButtonDefaults
@@ -40,7 +41,11 @@ import androidx.compose.material.icons.filled.VideoCall
4041
import androidx.compose.runtime.Composable
4142
import androidx.compose.runtime.LaunchedEffect
4243
import androidx.compose.runtime.getValue
44+
import androidx.compose.runtime.mutableStateOf
45+
import androidx.compose.runtime.saveable.rememberSaveable
46+
import androidx.compose.runtime.setValue
4347
import androidx.compose.ui.Alignment
48+
import androidx.compose.ui.Alignment.Companion.CenterVertically
4449
import androidx.compose.ui.Modifier
4550
import androidx.compose.ui.graphics.Color
4651
import androidx.compose.ui.platform.testTag
@@ -62,7 +67,7 @@ import java.util.UUID
6267
@Composable
6368
fun DirectCallJoinScreen(
6469
viewModel: DirectCallJoinViewModel = hiltViewModel(),
65-
navigateToDirectCall: (cid: StreamCallId, memberList: String) -> Unit,
70+
navigateToDirectCall: (cid: StreamCallId, memberList: String, joinAndRing: Boolean) -> Unit,
6671
) {
6772
val uiState by viewModel.uiState.collectAsStateWithLifecycle()
6873

@@ -128,8 +133,10 @@ private fun Header(user: User?) {
128133
private fun Body(
129134
uiState: DirectCallUiState,
130135
toggleUserSelection: (Int) -> Unit,
131-
onStartCallClick: (cid: StreamCallId, membersList: String) -> Unit,
136+
onStartCallClick: (cid: StreamCallId, membersList: String, joinAndRing: Boolean) -> Unit,
132137
) {
138+
var callerJoinsFirst by rememberSaveable { mutableStateOf(false) }
139+
133140
Box(
134141
modifier = Modifier
135142
.fillMaxSize()
@@ -145,15 +152,27 @@ private fun Body(
145152
} else {
146153
uiState.otherUsers?.let { users ->
147154
Column(
148-
modifier = Modifier.align(Alignment.TopStart)
155+
modifier = Modifier
156+
.align(Alignment.TopStart)
149157
.padding(bottom = 80.dp),
150158
) {
159+
Row(
160+
verticalAlignment = CenterVertically,
161+
modifier = Modifier
162+
.fillMaxWidth()
163+
.padding(vertical = 10.dp),
164+
horizontalArrangement = Arrangement.SpaceBetween,
165+
) {
166+
Text("Join First", color = Color.White)
167+
Checkbox(callerJoinsFirst, onCheckedChange = {
168+
callerJoinsFirst = !callerJoinsFirst
169+
})
170+
}
151171
UserList(
152172
entries = users,
153173
onUserClick = { clickedIndex -> toggleUserSelection(clickedIndex) },
154174
)
155175
}
156-
157176
Row(
158177
Modifier
159178
.fillMaxWidth()
@@ -178,6 +197,7 @@ private fun Body(
178197
users
179198
.filter { it.isSelected }
180199
.joinToString(separator = ",") { it.user.id ?: "" },
200+
callerJoinsFirst,
181201
)
182202
},
183203
)
@@ -198,6 +218,7 @@ private fun Body(
198218
users
199219
.filter { it.isSelected }
200220
.joinToString(separator = ",") { it.user.id ?: "" },
221+
callerJoinsFirst,
201222
)
202223
},
203224
)
@@ -294,7 +315,7 @@ private fun HeaderPreview() {
294315
},
295316
),
296317
toggleUserSelection = {},
297-
) { _, _ ->
318+
) { _, _, _ ->
298319
}
299320
}
300321
}

0 commit comments

Comments
 (0)