From f033db2aa9afb58acbe02cc2ebfd47552f106a5f Mon Sep 17 00:00:00 2001 From: Juha Heinanen Date: Tue, 17 Mar 2026 05:18:06 +0200 Subject: [PATCH] Fixed lint warning and bug in codecs screen --- .../kotlin/com/tutpro/baresip/CodecsScreen.kt | 70 +++++++------------ 1 file changed, 27 insertions(+), 43 deletions(-) diff --git a/app/src/main/kotlin/com/tutpro/baresip/CodecsScreen.kt b/app/src/main/kotlin/com/tutpro/baresip/CodecsScreen.kt index b3676072..5f5580f0 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/CodecsScreen.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/CodecsScreen.kt @@ -30,11 +30,9 @@ import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateListOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue import androidx.compose.runtime.snapshots.SnapshotStateList import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha @@ -97,7 +95,28 @@ private fun CodecsScreen( ) { val ua = UserAgent.ofAor(aor)!! val acc = ua.account - var currentCodecsState by remember { mutableStateOf>(emptyList()) } + val codecs = remember { mutableStateListOf() } + + LaunchedEffect(acc, media) { + val allCodecs: List = if (media == "audio") { + Api.audio_codecs().split(",") + } else { + Api.video_codecs().split(",").distinct() + } + val accCodecs: List = if (media == "audio") { + acc.audioCodec + } else { + acc.videoCodec + } + val currentCodecs = mutableListOf() + for (codec in accCodecs) + currentCodecs.add(Codec(codec, mutableStateOf(true))) + for (codec in allCodecs) + if (codec !in accCodecs) + currentCodecs.add(Codec(codec, mutableStateOf(false))) + codecs.clear() + codecs.addAll(currentCodecs) + } Scaffold( modifier = Modifier.fillMaxSize().imePadding(), @@ -138,7 +157,7 @@ private fun CodecsScreen( }, actions = { IconButton(onClick = { - checkOnClick(currentCodecsState) + checkOnClick(codecs) }) { Icon( imageVector = Icons.Filled.Check, @@ -152,9 +171,7 @@ private fun CodecsScreen( content = { contentPadding -> CodecsContent( contentPadding, - acc, - media, - onUpdateCodecs = { updatedCodecs -> currentCodecsState = updatedCodecs } + codecs ) }, ) @@ -163,33 +180,8 @@ private fun CodecsScreen( @Composable private fun CodecsContent( contentPadding: PaddingValues, - acc: Account, - media: String, - onUpdateCodecs: (List) -> Unit + codecs: SnapshotStateList ) { - val codecs = remember { mutableStateListOf() } - - LaunchedEffect(acc, media) { - val allCodecs: List = if (media == "audio") { - Api.audio_codecs().split(",") - } else { - Api.video_codecs().split(",").distinct() - } - val accCodecs: List = if (media == "audio") { - acc.audioCodec - } else { - acc.videoCodec - } - val currentCodecs = mutableListOf() - for (codec in accCodecs) - currentCodecs.add(Codec(codec, mutableStateOf(true))) - for (codec in allCodecs) - if (codec !in accCodecs) - currentCodecs.add(Codec(codec, mutableStateOf(false))) - codecs.clear() - codecs.addAll(currentCodecs) - } - Column( modifier = Modifier .fillMaxWidth() @@ -197,21 +189,17 @@ private fun CodecsContent( .padding(contentPadding) .padding(bottom = 16.dp), ) { - Codecs( - codecs = codecs, - onUpdateCodecs = onUpdateCodecs - ) + Codecs(codecs = codecs) } } @OptIn(ExperimentalFoundationApi::class) @Composable -private fun Codecs(codecs: SnapshotStateList, onUpdateCodecs: (List) -> Unit) { +private fun Codecs(codecs: SnapshotStateList) { val draggableState = rememberDraggableListState( onMove = { fromIndex, toIndex -> codecs.add(toIndex, codecs.removeAt(fromIndex)) - onUpdateCodecs(codecs.toList()) } ) @@ -221,7 +209,6 @@ private fun Codecs(codecs: SnapshotStateList, onUpdateCodecs: (List, onUpdateCodecs: (List, onUpdateCodecs: (List