From 39dcfad91e34991f8fe7348d4384ee61361e5dd1 Mon Sep 17 00:00:00 2001 From: Infi Date: Tue, 30 Jan 2024 00:04:52 +0100 Subject: [PATCH] feat: fetch uncached users in reaction sheet Signed-off-by: Infi --- .../main/java/chat/revolt/sheets/ReactionInfoSheet.kt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/chat/revolt/sheets/ReactionInfoSheet.kt b/app/src/main/java/chat/revolt/sheets/ReactionInfoSheet.kt index 619ef432..b24b33f1 100644 --- a/app/src/main/java/chat/revolt/sheets/ReactionInfoSheet.kt +++ b/app/src/main/java/chat/revolt/sheets/ReactionInfoSheet.kt @@ -39,6 +39,7 @@ import chat.revolt.api.RevoltAPI import chat.revolt.api.internals.MessageProcessor import chat.revolt.api.internals.isUlid import chat.revolt.api.routes.custom.fetchEmoji +import chat.revolt.api.routes.user.fetchUser import chat.revolt.api.schemas.Emoji import chat.revolt.api.schemas.User import chat.revolt.components.chat.MemberListItem @@ -204,13 +205,20 @@ fun ReactionInfoSheet(messageId: String, emoji: String, onDismiss: () -> Unit) { val reactionsForEmoji = reactions[reactionEmoji[selectedReactionIndex]] items(reactionsForEmoji?.size ?: 0) { index -> val reaction = reactionsForEmoji?.get(index) ?: return@items - val user = RevoltAPI.userCache[reaction] ?: User.getPlaceholder(reaction) + val userOrNull = RevoltAPI.userCache[reaction] + val user = userOrNull ?: User.getPlaceholder(reaction) val member = if (channel.server != null && user.id != null) { RevoltAPI.members.getMember(channel.server, user.id) } else { null } + LaunchedEffect(reaction) { + if (reaction !in RevoltAPI.userCache) { + RevoltAPI.userCache[reaction] = fetchUser(reaction) + } + } + MemberListItem( member = member, user = user,