Fix crash with unknown notification type (#1123)
* Fix crash with unknown notification type * Add NotificationTypeAdapter to handle unknown type * Remove unneeded SerializedName
This commit is contained in:
parent
4f7c989b2d
commit
d0f7f6f83c
3 changed files with 39 additions and 6 deletions
|
@ -136,6 +136,7 @@ public class NotificationsAdapter extends RecyclerView.Adapter {
|
|||
(NotificationViewData.Concrete) notification;
|
||||
Notification.Type type = concreteNotificaton.getType();
|
||||
switch (type) {
|
||||
default:
|
||||
case MENTION: {
|
||||
StatusViewHolder holder = (StatusViewHolder) viewHolder;
|
||||
StatusViewData.Concrete status = concreteNotificaton.getStatusViewData();
|
||||
|
|
|
@ -15,7 +15,8 @@
|
|||
|
||||
package com.keylesspalace.tusky.entity
|
||||
|
||||
import com.google.gson.annotations.SerializedName
|
||||
import com.google.gson.annotations.JsonAdapter
|
||||
import com.keylesspalace.tusky.json.NotificationTypeAdapter
|
||||
|
||||
data class Notification(
|
||||
val type: Type,
|
||||
|
@ -23,15 +24,28 @@ data class Notification(
|
|||
val account: Account,
|
||||
val status: Status?) {
|
||||
|
||||
@JsonAdapter(NotificationTypeAdapter::class)
|
||||
enum class Type {
|
||||
@SerializedName("mention")
|
||||
UNKNOWN,
|
||||
MENTION,
|
||||
@SerializedName("reblog")
|
||||
REBLOG,
|
||||
@SerializedName("favourite")
|
||||
FAVOURITE,
|
||||
@SerializedName("follow")
|
||||
FOLLOW
|
||||
FOLLOW;
|
||||
|
||||
companion object {
|
||||
|
||||
@JvmStatic
|
||||
fun byString(s: String): Type {
|
||||
return when (s) {
|
||||
"mention" -> MENTION
|
||||
"reblog" -> REBLOG
|
||||
"favourite" -> FAVOURITE
|
||||
"follow" -> FOLLOW
|
||||
else -> UNKNOWN
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
package com.keylesspalace.tusky.json
|
||||
|
||||
import com.google.gson.JsonDeserializationContext
|
||||
import com.google.gson.JsonDeserializer
|
||||
import com.google.gson.JsonElement
|
||||
import com.google.gson.JsonParseException
|
||||
import com.keylesspalace.tusky.entity.Notification
|
||||
|
||||
import java.lang.reflect.Type
|
||||
|
||||
class NotificationTypeAdapter : JsonDeserializer<Notification.Type> {
|
||||
|
||||
@Throws(JsonParseException::class)
|
||||
override fun deserialize(json: JsonElement, typeOfT: Type, context: JsonDeserializationContext): Notification.Type {
|
||||
return Notification.Type.byString(json.asString)
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue