Be more robust when parsing some enums - Guest Access

This commit is contained in:
Benoit Marty 2021-03-26 12:18:36 +01:00
parent a7539d0f95
commit 5364d7fd03
2 changed files with 13 additions and 3 deletions

View File

@ -18,6 +18,7 @@ package org.matrix.android.sdk.api.session.room.model
import com.squareup.moshi.Json import com.squareup.moshi.Json
import com.squareup.moshi.JsonClass import com.squareup.moshi.JsonClass
import timber.log.Timber
/** /**
* Class representing the EventType.STATE_ROOM_GUEST_ACCESS state event content * Class representing the EventType.STATE_ROOM_GUEST_ACCESS state event content
@ -26,8 +27,17 @@ import com.squareup.moshi.JsonClass
@JsonClass(generateAdapter = true) @JsonClass(generateAdapter = true)
data class RoomGuestAccessContent( data class RoomGuestAccessContent(
// Required. Whether guests can join the room. One of: ["can_join", "forbidden"] // Required. Whether guests can join the room. One of: ["can_join", "forbidden"]
@Json(name = "guest_access") val guestAccess: GuestAccess? = null @Json(name = "guest_access") private val _guestAccess: String? = null
) ) {
val guestAccess: GuestAccess? = when (_guestAccess) {
"can_join" -> GuestAccess.CanJoin
"forbidden" -> GuestAccess.Forbidden
else -> {
Timber.w("Invalid value for GuestAccess: `$_guestAccess`")
null
}
}
}
@JsonClass(generateAdapter = false) @JsonClass(generateAdapter = false)
enum class GuestAccess(val value: String) { enum class GuestAccess(val value: String) {

View File

@ -138,7 +138,7 @@ internal class DefaultStateService @AssistedInject constructor(@Assisted private
if (guestAccess != null) { if (guestAccess != null) {
sendStateEvent( sendStateEvent(
eventType = EventType.STATE_ROOM_GUEST_ACCESS, eventType = EventType.STATE_ROOM_GUEST_ACCESS,
body = RoomGuestAccessContent(guestAccess).toContent(), body = mapOf("guest_access" to guestAccess),
stateKey = null stateKey = null
) )
} }