Исправил переход по своему тэгу в группах и убрал лишнюю подсветку

- Клик по своему упоминанию теперь сразу открывает My Profile без экрана OtherProfile и kebab-меню\n- Нормализовал сравнение аккаунта по publicKey/username (trim + ignoreCase)\n- Убрал жёлтую подсветку сообщений с упоминанием в группах\n- Подровнял положение бейджа верификации рядом с именем
This commit is contained in:
2026-03-06 20:03:50 +05:00
parent 6a269f93db
commit 429025537f
4 changed files with 61 additions and 40 deletions

View File

@@ -640,9 +640,34 @@ fun MainScreen(
if (screen is Screen.Requests && navStack.any { it is Screen.Requests }) return
navStack = navStack + screen
}
fun isCurrentAccountUser(user: SearchUser): Boolean {
val candidatePublicKey = user.publicKey.trim()
val normalizedAccountPublicKey = accountPublicKey.trim()
if (
candidatePublicKey.isNotBlank() &&
normalizedAccountPublicKey.isNotBlank() &&
candidatePublicKey.equals(normalizedAccountPublicKey, ignoreCase = true)
) {
return true
}
val candidateUsername = user.username.trim().trimStart('@')
val normalizedAccountUsername = accountUsername.trim().trimStart('@')
return candidatePublicKey.isBlank() &&
candidateUsername.isNotBlank() &&
normalizedAccountUsername.isNotBlank() &&
candidateUsername.equals(normalizedAccountUsername, ignoreCase = true)
}
fun popScreen() {
navStack = navStack.dropLast(1)
}
fun openOwnProfile() {
navStack =
navStack.filterNot {
it is Screen.ChatDetail || it is Screen.OtherProfile || it is Screen.GroupInfo
}
pushScreen(Screen.Profile)
}
fun popProfileAndChildren() {
navStack =
navStack.filterNot {
@@ -977,9 +1002,9 @@ fun MainScreen(
totalUnreadFromOthers = totalUnreadFromOthers,
onBack = { popChatAndChildren() },
onUserProfileClick = { user ->
if (user.publicKey == accountPublicKey) {
if (isCurrentAccountUser(user)) {
// Свой профиль — открываем My Profile
pushScreen(Screen.Profile)
openOwnProfile()
} else {
// Открываем профиль другого пользователя
pushScreen(Screen.OtherProfile(user))
@@ -1025,8 +1050,8 @@ fun MainScreen(
avatarRepository = avatarRepository,
onBack = { navStack = navStack.filterNot { it is Screen.GroupInfo } },
onMemberClick = { member ->
if (member.publicKey == accountPublicKey) {
pushScreen(Screen.Profile)
if (isCurrentAccountUser(member)) {
openOwnProfile()
} else {
pushScreen(Screen.OtherProfile(member))
}