Compare commits

...

9 Commits

Author SHA1 Message Date
56ba0bd42a Слил master в dev 2026-03-07 19:03:54 +05:00
9625763b0c Убрал свечение у кнопки на экране создания групп
All checks were successful
Android Kernel Build / build (push) Successful in 16h29m0s
2026-03-07 19:00:39 +05:00
5d8dc32672 Замена BasicTextField на AppleEmojiTextField для улучшения ввода названия группы с поддержкой эмодзи и улучшенной логикой отображения.
All checks were successful
Android Kernel Build / build (push) Successful in 16h10m51s
2026-03-07 18:43:58 +05:00
c2761ecedf Релиз v1.1.4: профиль, группы, аватары и исправления
All checks were successful
Android Kernel Build / build (push) Successful in 16h14m54s
- Фиксированные табы в профиле и группах
- Fast-scroll с датой в медиа-галерее
- Apple Emoji в аватарах и интерфейсе
- Восстановление ключей группы по инвайт-ссылке
- Улучшено отображение аватаров с эмодзи
- Исправлен переход по своему тэгу в группах
- Убрана лишняя подсветка, исправлен fast-scroll overlay
- Версия 1.1.3 → 1.1.4, versionCode 15 → 16

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 02:50:29 +05:00
db605cb392 Исправил переход по своему тэгу в группах и убрал лишнюю подсветку
- Клик по своему упоминанию теперь сразу открывает My Profile без экрана OtherProfile и kebab-меню\n- Нормализовал сравнение аккаунта по publicKey/username (trim + ignoreCase)\n- Убрал жёлтую подсветку сообщений с упоминанием в группах\n- Подровнял положение бейджа верификации рядом с именем
2026-03-07 02:50:29 +05:00
06dc9a2b5d Улучшение отображения аватаров: добавлена поддержка текста с эмодзи и улучшена логика отображения в AvatarImage. Обновлен SharedMediaFastScrollOverlay для корректного отображения при изменении размера. Исправлено сообщение подсказки в строках. 2026-03-07 02:50:29 +05:00
6429a61ad0 Профиль и группы: фиксированные табы, fast-scroll с датой и Apple Emoji 2026-03-07 02:50:29 +05:00
59d71c9717 Группы: восстановление ключей по инвайту и Apple Emoji
- Добавлено восстановление локального ключа группы из инвайта при повторном нажатии, даже если на сервере статус уже JOINED.
- В карточке приглашения сначала восстанавливается ключ, затем открывается группа.
- Включено отображение Apple Emoji для названия/описания группы в GroupInfo и в заголовке группы в чате.
- Обновлён превью-заголовок в GroupSetup на Apple Emoji рендер.
2026-03-07 02:50:29 +05:00
1fb891df53 Релиз 1.1.3: обновлена версия и release notes
All checks were successful
Android Kernel Build / build (push) Successful in 16h10m28s
- Поднят versionName до 1.1.3 и versionCode до 15.
- Обновлены release notes под текущий релиз.
- В notes добавлены изменения по reply/mentions в группах, индикаторам чтения и UX-исправлениям.
2026-03-05 20:00:45 +05:00

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,44 +438,29 @@ 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 ->
if (focusState.isFocused &&
showEmojiKeyboard &&
!coordinator.isTransitioning
) {
coordinator.closeEmoji(hideEmoji = { showEmojiKeyboard = false })
}
}
.padding(vertical = 2.dp), .padding(vertical = 2.dp),
decorationBox = { innerTextField -> onViewCreated = { editText ->
Box( editText.isSingleLine = true
modifier = Modifier.fillMaxWidth(), editText.maxLines = 1
contentAlignment = Alignment.CenterStart editText.setHorizontallyScrolling(true)
},
onFocusChanged = { hasFocus ->
if (hasFocus &&
showEmojiKeyboard &&
!coordinator.isTransitioning
) { ) {
if (title.isBlank()) { coordinator.closeEmoji(hideEmoji = { showEmojiKeyboard = false })
Text(
text = "Group name",
color = secondaryTextColor.copy(alpha = 0.88f),
fontSize = 18.sp,
fontWeight = FontWeight.Normal
)
}
innerTextField()
} }
} }
) )
@@ -705,6 +687,7 @@ fun GroupSetupScreen(
} }
FloatingActionButton( FloatingActionButton(
elevation = androidx.compose.material3.FloatingActionButtonDefaults.elevation(0.dp, 0.dp, 0.dp, 0.dp),
onClick = { onClick = {
if (step == GroupSetupStep.DETAILS) { if (step == GroupSetupStep.DETAILS) {
if (canGoNext) { if (canGoNext) {