fix: error handling for single member fetch

Signed-off-by: Infi <wingit@geist.ga>
This commit is contained in:
Infi 2023-06-18 16:14:17 +02:00
parent 083e1d52be
commit f8ae7607a5
2 changed files with 14 additions and 1 deletions

View File

@ -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) {

View File

@ -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()
}