Замена BasicTextField на AppleEmojiTextField для улучшения ввода названия группы с поддержкой эмодзи и улучшенной логикой отображения.
All checks were successful
Android Kernel Build / build (push) Successful in 16h10m51s

This commit is contained in:
2026-03-07 18:43:58 +05:00
parent c2761ecedf
commit 5d8dc32672

View File

@@ -26,7 +26,6 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.BasicTextField
import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.FloatingActionButton
@@ -54,9 +53,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.focus.onFocusChanged
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.SolidColor
import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.graphics.toArgb
import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
@@ -66,7 +63,6 @@ import androidx.compose.ui.platform.LocalSoftwareKeyboardController
import androidx.compose.ui.platform.LocalView import androidx.compose.ui.platform.LocalView
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
@@ -79,6 +75,7 @@ import com.rosetta.messenger.data.GroupRepository
import com.rosetta.messenger.network.GroupStatus import com.rosetta.messenger.network.GroupStatus
import com.rosetta.messenger.network.SearchUser import com.rosetta.messenger.network.SearchUser
import com.rosetta.messenger.repository.AvatarRepository import com.rosetta.messenger.repository.AvatarRepository
import com.rosetta.messenger.ui.components.AppleEmojiTextField
import com.rosetta.messenger.ui.components.KeyboardHeightProvider import com.rosetta.messenger.ui.components.KeyboardHeightProvider
import com.rosetta.messenger.ui.components.OptimizedEmojiPicker import com.rosetta.messenger.ui.components.OptimizedEmojiPicker
import com.rosetta.messenger.ui.components.AppleEmojiText import com.rosetta.messenger.ui.components.AppleEmojiText
@@ -441,46 +438,31 @@ fun GroupSetupScreen(
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
Box(modifier = Modifier.weight(1f)) { Box(modifier = Modifier.weight(1f)) {
BasicTextField( AppleEmojiTextField(
value = title, value = title,
onValueChange = { newValue -> title = newValue.take(80) }, onValueChange = { newValue -> title = newValue.take(80) },
singleLine = true, textColor = primaryTextColor,
textStyle = TextStyle( textSize = 18f,
color = primaryTextColor, hint = "Group name",
fontSize = 18.sp, hintColor = secondaryTextColor.copy(alpha = 0.88f),
fontWeight = FontWeight.Medium
),
cursorBrush = SolidColor(accentColor),
enabled = !isLoading,
modifier = modifier =
Modifier Modifier
.fillMaxWidth() .fillMaxWidth()
.focusRequester(nameFocusRequester) .focusRequester(nameFocusRequester)
.onFocusChanged { focusState -> .padding(vertical = 2.dp),
if (focusState.isFocused && onViewCreated = { editText ->
editText.isSingleLine = true
editText.maxLines = 1
editText.setHorizontallyScrolling(true)
},
onFocusChanged = { hasFocus ->
if (hasFocus &&
showEmojiKeyboard && showEmojiKeyboard &&
!coordinator.isTransitioning !coordinator.isTransitioning
) { ) {
coordinator.closeEmoji(hideEmoji = { showEmojiKeyboard = false }) coordinator.closeEmoji(hideEmoji = { showEmojiKeyboard = false })
} }
} }
.padding(vertical = 2.dp),
decorationBox = { innerTextField ->
Box(
modifier = Modifier.fillMaxWidth(),
contentAlignment = Alignment.CenterStart
) {
if (title.isBlank()) {
Text(
text = "Group name",
color = secondaryTextColor.copy(alpha = 0.88f),
fontSize = 18.sp,
fontWeight = FontWeight.Normal
)
}
innerTextField()
}
}
) )
} }