Исправил переход по своему тэгу в группах и убрал лишнюю подсветку
- Клик по своему упоминанию теперь сразу открывает My Profile без экрана OtherProfile и kebab-меню\n- Нормализовал сравнение аккаунта по publicKey/username (trim + ignoreCase)\n- Убрал жёлтую подсветку сообщений с упоминанием в группах\n- Подровнял положение бейджа верификации рядом с именем
This commit is contained in:
@@ -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))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user