Ускорено подключение, исправлен кэш участников групп и обновлена версия до 1.1.5
This commit is contained in:
@@ -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)
|
||||
)
|
||||
}
|
||||
// 🔒 Красная иконка замочка для заблокированных пользователей
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user