Ускорено подключение, исправлен кэш участников групп и обновлена версия до 1.1.5

This commit is contained in:
2026-03-09 20:20:27 +05:00
parent 41faa98130
commit c2e27cf543
9 changed files with 39 additions and 52 deletions

View File

@@ -3891,7 +3891,7 @@ fun DialogItemContent(
VerifiedBadge(
verified = if (dialog.verified > 0) dialog.verified else 1,
size = 16,
modifier = Modifier.offset(y = (-1).dp)
modifier = Modifier.offset(y = (-2).dp)
)
}
// 🔒 Красная иконка замочка для заблокированных пользователей

View File

@@ -395,7 +395,7 @@ fun GroupInfoScreen(
var showEncryptionPage by rememberSaveable(dialogPublicKey) { mutableStateOf(false) }
var encryptionKey by rememberSaveable(dialogPublicKey) { mutableStateOf("") }
var encryptionKeyLoading by remember { mutableStateOf(false) }
var membersLoading by remember { mutableStateOf(false) }
var membersLoading by remember(dialogPublicKey) { mutableStateOf(false) }
var isMuted by remember { mutableStateOf(false) }
var showGroupAvatarPicker by rememberSaveable(dialogPublicKey) { mutableStateOf(false) }
var showGroupAvatarViewer by rememberSaveable(dialogPublicKey) { mutableStateOf(false) }
@@ -414,18 +414,21 @@ fun GroupInfoScreen(
val initialDiskMembersCache = remember(membersCacheKey) {
GroupMembersDiskCache.getAny(context, membersCacheKey)
}
val hasInitialMembersCache = remember(initialMemoryMembersCache, initialDiskMembersCache) {
initialMemoryMembersCache != null || initialDiskMembersCache != null
}
val initialMembers = remember(initialMemoryMembersCache, initialDiskMembersCache) {
initialMemoryMembersCache?.members ?: initialDiskMembersCache?.members.orEmpty()
}
var members by remember(dialogPublicKey) { mutableStateOf(initialMembers) }
var members by remember(dialogPublicKey, membersCacheKey) { mutableStateOf(initialMembers) }
val memberInfoByKey =
remember(dialogPublicKey) {
remember(dialogPublicKey, membersCacheKey) {
mutableStateMapOf<String, SearchUser>().apply {
initialMemoryMembersCache?.memberInfoByKey?.let { putAll(it) }
}
}
// Real online status from PacketOnlineState (0x05), NOT from SearchUser.online
val memberOnlineStatus = remember(dialogPublicKey) { mutableStateMapOf<String, Boolean>() }
val memberOnlineStatus = remember(dialogPublicKey, membersCacheKey) { mutableStateMapOf<String, Boolean>() }
val groupEntity by produceState<com.rosetta.messenger.database.GroupEntity?>(
initialValue = null,
@@ -1089,7 +1092,7 @@ fun GroupInfoScreen(
)
Text(
text = if (membersLoading) {
text = if (membersLoading || (members.isEmpty() && !hasInitialMembersCache)) {
"Loading members..."
} else {
"${members.size} members, $onlineCount online"