From f8ae7607a590256c9e4e1d741d7362f0ec6a207c Mon Sep 17 00:00:00 2001 From: Infi Date: Sun, 18 Jun 2023 16:14:17 +0200 Subject: [PATCH] fix: error handling for single member fetch Signed-off-by: Infi --- app/src/main/java/chat/revolt/api/routes/server/Server.kt | 7 +++++++ .../screens/chat/views/channel/ChannelScreenViewModel.kt | 8 +++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/chat/revolt/api/routes/server/Server.kt b/app/src/main/java/chat/revolt/api/routes/server/Server.kt index 3d245923..ef7740af 100644 --- a/app/src/main/java/chat/revolt/api/routes/server/Server.kt +++ b/app/src/main/java/chat/revolt/api/routes/server/Server.kt @@ -71,6 +71,13 @@ suspend fun fetchMember(serverId: String, userId: String, pure: Boolean = false) headers.append(RevoltAPI.TOKEN_HEADER_NAME, RevoltAPI.sessionToken) } + try { + val error = RevoltJson.decodeFromString(RevoltError.serializer(), response.bodyAsText()) + throw Error(error.type) + } catch (e: SerializationException) { + // Not an error + } + val member = RevoltJson.decodeFromString(Member.serializer(), response.bodyAsText()) if (!pure) { diff --git a/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreenViewModel.kt b/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreenViewModel.kt index 74b0520a..2b85795e 100644 --- a/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreenViewModel.kt +++ b/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreenViewModel.kt @@ -274,7 +274,13 @@ class ChannelScreenViewModel : ViewModel() { if (it.channel != activeChannel?.id) return@onEach addUserIfUnknown(it.author!!) - activeChannel?.server?.let { s -> fetchMember(s, it.author) } + activeChannel?.server?.let { s -> + try { + fetchMember(s, it.author) + } catch (e: Exception) { + Log.e("ChannelScreen", "Failed to fetch member", e) + } + } regroupMessages(listOf(it) + renderableMessages) ackNewest() }