2017-03-09 00:27:37 +01:00
|
|
|
/* Copyright 2017 Andrew Dawson
|
|
|
|
*
|
2017-04-10 02:12:31 +02:00
|
|
|
* This file is a part of Tusky.
|
2017-03-09 00:27:37 +01:00
|
|
|
*
|
2017-04-10 02:12:31 +02:00
|
|
|
* This program is free software; you can redistribute it and/or modify it under the terms of the
|
|
|
|
* GNU General Public License as published by the Free Software Foundation; either version 3 of the
|
|
|
|
* License, or (at your option) any later version.
|
2017-03-09 00:27:37 +01:00
|
|
|
*
|
|
|
|
* Tusky is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
|
2017-04-10 02:12:31 +02:00
|
|
|
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
|
|
|
* Public License for more details.
|
2017-03-09 00:27:37 +01:00
|
|
|
*
|
2017-04-10 02:12:31 +02:00
|
|
|
* You should have received a copy of the GNU General Public License along with Tusky; if not,
|
|
|
|
* see <http://www.gnu.org/licenses>. */
|
2017-03-09 00:27:37 +01:00
|
|
|
|
2018-03-03 13:24:03 +01:00
|
|
|
package com.keylesspalace.tusky.entity
|
2017-03-09 00:27:37 +01:00
|
|
|
|
2019-04-09 19:13:54 +02:00
|
|
|
import com.google.gson.*
|
2019-03-16 14:33:16 +01:00
|
|
|
import com.google.gson.annotations.JsonAdapter
|
2017-03-09 00:27:37 +01:00
|
|
|
|
2018-03-03 13:24:03 +01:00
|
|
|
data class Notification(
|
|
|
|
val type: Type,
|
|
|
|
val id: String,
|
|
|
|
val account: Account,
|
|
|
|
val status: Status?) {
|
|
|
|
|
2019-03-16 14:33:16 +01:00
|
|
|
@JsonAdapter(NotificationTypeAdapter::class)
|
2019-04-09 19:13:54 +02:00
|
|
|
enum class Type(val presentation: String) {
|
|
|
|
UNKNOWN("unknown"),
|
|
|
|
MENTION("mention"),
|
|
|
|
REBLOG("reblog"),
|
|
|
|
FAVOURITE("favourite"),
|
2019-05-02 19:44:35 +02:00
|
|
|
FOLLOW("follow"),
|
|
|
|
POLL("poll");
|
2019-03-16 14:33:16 +01:00
|
|
|
|
|
|
|
companion object {
|
|
|
|
|
|
|
|
@JvmStatic
|
|
|
|
fun byString(s: String): Type {
|
2019-04-09 19:13:54 +02:00
|
|
|
values().forEach {
|
|
|
|
if (s == it.presentation)
|
|
|
|
return it
|
2019-03-16 14:33:16 +01:00
|
|
|
}
|
2019-04-09 19:13:54 +02:00
|
|
|
return UNKNOWN
|
2019-03-16 14:33:16 +01:00
|
|
|
}
|
2019-05-02 19:44:35 +02:00
|
|
|
val asList = listOf(MENTION, REBLOG, FAVOURITE, FOLLOW, POLL)
|
2019-04-09 19:13:54 +02:00
|
|
|
}
|
2019-03-16 14:33:16 +01:00
|
|
|
|
2019-04-09 19:13:54 +02:00
|
|
|
override fun toString(): String {
|
|
|
|
return presentation
|
2019-03-16 14:33:16 +01:00
|
|
|
}
|
2017-03-09 00:27:37 +01:00
|
|
|
}
|
|
|
|
|
2018-03-03 13:24:03 +01:00
|
|
|
override fun hashCode(): Int {
|
|
|
|
return id.hashCode()
|
2017-03-09 00:27:37 +01:00
|
|
|
}
|
|
|
|
|
2018-03-03 13:24:03 +01:00
|
|
|
override fun equals(other: Any?): Boolean {
|
|
|
|
if (other !is Notification) {
|
|
|
|
return false
|
2017-03-09 00:27:37 +01:00
|
|
|
}
|
2018-03-03 13:24:03 +01:00
|
|
|
val notification = other as Notification?
|
|
|
|
return notification?.id == this.id
|
2017-03-09 00:27:37 +01:00
|
|
|
}
|
2019-03-17 07:57:10 +01:00
|
|
|
|
|
|
|
class NotificationTypeAdapter : JsonDeserializer<Type> {
|
|
|
|
|
|
|
|
@Throws(JsonParseException::class)
|
2019-04-20 22:36:44 +02:00
|
|
|
override fun deserialize(json: JsonElement, typeOfT: java.lang.reflect.Type, context: JsonDeserializationContext): Type {
|
|
|
|
return Type.byString(json.asString)
|
2019-03-17 07:57:10 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
2017-03-09 00:27:37 +01:00
|
|
|
}
|