convert entity classes to Kotlin data classes (#526)
* convert entity classes to Kotlin data classes * more data classes, code stylemain
parent
5998f3b375
commit
5de7b21007
@ -1,130 +0,0 @@ |
||||
/* Copyright 2017 Andrew Dawson |
||||
* |
||||
* This file is a part of Tusky. |
||||
* |
||||
* 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. |
||||
* |
||||
* Tusky is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even |
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
||||
* Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License along with Tusky; if not, |
||||
* see <http://www.gnu.org/licenses>. */
|
||||
|
||||
package com.keylesspalace.tusky.entity; |
||||
|
||||
import android.os.Parcel; |
||||
import android.os.Parcelable; |
||||
import android.text.Spanned; |
||||
|
||||
import com.google.gson.annotations.SerializedName; |
||||
import com.keylesspalace.tusky.util.HtmlUtils; |
||||
|
||||
public class Account implements Parcelable { |
||||
public String id; |
||||
|
||||
@SerializedName("username") |
||||
public String localUsername; |
||||
|
||||
@SerializedName("acct") |
||||
public String username; |
||||
|
||||
@SerializedName("display_name") |
||||
public String displayName; |
||||
|
||||
public Spanned note; |
||||
|
||||
public String url; |
||||
|
||||
public String avatar; |
||||
|
||||
public String header; |
||||
|
||||
public boolean locked; |
||||
|
||||
@SerializedName("followers_count") |
||||
public String followersCount; |
||||
|
||||
@SerializedName("following_count") |
||||
public String followingCount; |
||||
|
||||
@SerializedName("statuses_count") |
||||
public String statusesCount; |
||||
|
||||
@Override |
||||
public int hashCode() { |
||||
return id.hashCode(); |
||||
} |
||||
|
||||
@Override |
||||
public boolean equals(Object other) { |
||||
if (this.id == null) { |
||||
return this == other; |
||||
} else if (!(other instanceof Account)) { |
||||
return false; |
||||
} |
||||
Account account = (Account) other; |
||||
return account.id.equals(this.id); |
||||
} |
||||
|
||||
public String getDisplayName() { |
||||
if (displayName.length() == 0) { |
||||
return localUsername; |
||||
} |
||||
return displayName; |
||||
} |
||||
|
||||
@Override |
||||
public int describeContents() { |
||||
return 0; |
||||
} |
||||
|
||||
@Override |
||||
public void writeToParcel(Parcel dest, int flags) { |
||||
dest.writeString(id); |
||||
dest.writeString(localUsername); |
||||
dest.writeString(username); |
||||
dest.writeString(displayName); |
||||
dest.writeString(HtmlUtils.toHtml(note)); |
||||
dest.writeString(url); |
||||
dest.writeString(avatar); |
||||
dest.writeString(header); |
||||
dest.writeBooleanArray(new boolean[] { locked }); |
||||
dest.writeString(followersCount); |
||||
dest.writeString(followingCount); |
||||
dest.writeString(statusesCount); |
||||
} |
||||
|
||||
public Account() {} |
||||
|
||||
protected Account(Parcel in) { |
||||
id = in.readString(); |
||||
localUsername = in.readString(); |
||||
username = in.readString(); |
||||
displayName = in.readString(); |
||||
note = HtmlUtils.fromHtml(in.readString()); |
||||
url = in.readString(); |
||||
avatar = in.readString(); |
||||
header = in.readString(); |
||||
boolean[] lockedArray = new boolean[1]; |
||||
in.readBooleanArray(lockedArray); |
||||
locked = lockedArray[0]; |
||||
followersCount = in.readString(); |
||||
followingCount = in.readString(); |
||||
statusesCount = in.readString(); |
||||
} |
||||
|
||||
public static final Creator<Account> CREATOR = new Creator<Account>() { |
||||
@Override |
||||
public Account createFromParcel(Parcel source) { |
||||
return new Account(source); |
||||
} |
||||
|
||||
@Override |
||||
public Account[] newArray(int size) { |
||||
return new Account[size]; |
||||
} |
||||
}; |
||||
} |
@ -0,0 +1,69 @@ |
||||
/* Copyright 2017 Andrew Dawson |
||||
* |
||||
* This file is a part of Tusky. |
||||
* |
||||
* 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. |
||||
* |
||||
* Tusky is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even |
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
||||
* Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License along with Tusky; if not, |
||||
* see <http://www.gnu.org/licenses>. */ |
||||
|
||||
package com.keylesspalace.tusky.entity |
||||
|
||||
import android.os.Parcel |
||||
import android.os.Parcelable |
||||
import android.text.Spanned |
||||
|
||||
import com.google.gson.annotations.SerializedName |
||||
import com.keylesspalace.tusky.util.HtmlUtils |
||||
import kotlinx.android.parcel.Parceler |
||||
import kotlinx.android.parcel.Parcelize |
||||
import kotlinx.android.parcel.WriteWith |
||||
|
||||
@Parcelize |
||||
data class Account( |
||||
val id: String, |
||||
@SerializedName("username") val localUsername: String, |
||||
@SerializedName("acct") val username: String, |
||||
@SerializedName("display_name") val displayName: String, |
||||
val note: @WriteWith<SpannedParceler>() Spanned, |
||||
val url: String, |
||||
val avatar: String, |
||||
val header: String, |
||||
val locked: Boolean = false, |
||||
@SerializedName("followers_count") val followersCount: Int, |
||||
@SerializedName("following_count") val followingCount: Int, |
||||
@SerializedName("statuses_count") val statusesCount: Int |
||||
) : Parcelable { |
||||
|
||||
val name: String |
||||
get() = if (displayName.isEmpty()) { |
||||
localUsername |
||||
} else displayName |
||||
|
||||
override fun hashCode(): Int { |
||||
return id.hashCode() |
||||
} |
||||
|
||||
override fun equals(other: Any?): Boolean { |
||||
if (other !is Account) { |
||||
return false |
||||
} |
||||
val account = other as Account? |
||||
return account?.id == this.id |
||||
} |
||||
|
||||
object SpannedParceler : Parceler<Spanned> { |
||||
override fun create(parcel: Parcel) = HtmlUtils.fromHtml(parcel.readString()) |
||||
|
||||
override fun Spanned.write(parcel: Parcel, flags: Int) { |
||||
parcel.writeString(HtmlUtils.toHtml(this)) |
||||
} |
||||
} |
||||
|
||||
} |
@ -1,79 +0,0 @@ |
||||
/* Copyright 2017 Andrew Dawson |
||||
* |
||||
* This file is a part of Tusky. |
||||
* |
||||
* 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. |
||||
* |
||||
* Tusky is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even |
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
||||
* Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License along with Tusky; if not, |
||||
* see <http://www.gnu.org/licenses>. */
|
||||
|
||||
package com.keylesspalace.tusky.entity; |
||||
|
||||
import com.google.gson.JsonDeserializationContext; |
||||
import com.google.gson.JsonDeserializer; |
||||
import com.google.gson.JsonElement; |
||||
import com.google.gson.JsonParseException; |
||||
import com.google.gson.annotations.JsonAdapter; |
||||
import com.google.gson.annotations.SerializedName; |
||||
|
||||
public class Attachment { |
||||
public String id; |
||||
|
||||
public String url; |
||||
|
||||
@SerializedName("preview_url") |
||||
public String previewUrl; |
||||
|
||||
@SerializedName("text_url") |
||||
public String textUrl; |
||||
|
||||
public Type type; |
||||
|
||||
public String description; |
||||
|
||||
public static class Meta { |
||||
public MediaProperties original; |
||||
public MediaProperties small; |
||||
} |
||||
|
||||
public static class MediaProperties { |
||||
public int width; |
||||
public int height; |
||||
public float aspect; |
||||
} |
||||
|
||||
@JsonAdapter(MediaTypeDeserializer.class) |
||||
public enum Type { |
||||
@SerializedName("image") |
||||
IMAGE, |
||||
@SerializedName("gifv") |
||||
GIFV, |
||||
@SerializedName("video") |
||||
VIDEO, |
||||
@SerializedName("unknown") |
||||
UNKNOWN |
||||
} |
||||
|
||||
static class MediaTypeDeserializer implements JsonDeserializer<Type> { |
||||
@Override |
||||
public Type deserialize(JsonElement json, java.lang.reflect.Type classOfT, JsonDeserializationContext context) |
||||
throws JsonParseException { |
||||
switch(json.toString()) { |
||||
case "\"image\"": |
||||
return Type.IMAGE; |
||||
case "\"gifv\"": |
||||
return Type.GIFV; |
||||
case "\"video\"": |
||||
return Type.VIDEO; |
||||
default: |
||||
return Type.UNKNOWN; |
||||
} |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,57 @@ |
||||
/* Copyright 2017 Andrew Dawson |
||||
* |
||||
* This file is a part of Tusky. |
||||
* |
||||
* 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. |
||||
* |
||||
* Tusky is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even |
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
||||
* Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License along with Tusky; if not, |
||||
* see <http://www.gnu.org/licenses>. */ |
||||
|
||||
package com.keylesspalace.tusky.entity |
||||
|
||||
import com.google.gson.JsonDeserializationContext |
||||
import com.google.gson.JsonDeserializer |
||||
import com.google.gson.JsonElement |
||||
import com.google.gson.JsonParseException |
||||
import com.google.gson.annotations.JsonAdapter |
||||
import com.google.gson.annotations.SerializedName |
||||
|
||||
data class Attachment( |
||||
var id: String, |
||||
var url: String, |
||||
@SerializedName("preview_url") val previewUrl: String, |
||||
@SerializedName("text_url") val textUrl: String?, |
||||
var type: Type, |
||||
var description: String? |
||||
) { |
||||
|
||||
@JsonAdapter(MediaTypeDeserializer::class) |
||||
enum class Type { |
||||
@SerializedName("image") |
||||
IMAGE, |
||||
@SerializedName("gifv") |
||||
GIFV, |
||||
@SerializedName("video") |
||||
VIDEO, |
||||
@SerializedName("unknown") |
||||
UNKNOWN |
||||
} |
||||
|
||||
class MediaTypeDeserializer : JsonDeserializer<Type> { |
||||
@Throws(JsonParseException::class) |
||||
override fun deserialize(json: JsonElement, classOfT: java.lang.reflect.Type, context: JsonDeserializationContext): Type { |
||||
return when (json.toString()) { |
||||
"\"image\"" -> Type.IMAGE |
||||
"\"gifv\"" -> Type.GIFV |
||||
"\"video\"" -> Type.VIDEO |
||||
else -> Type.UNKNOWN |
||||
} |
||||
} |
||||
} |
||||
} |
@ -1,92 +0,0 @@ |
||||
/* Copyright 2017 Andrew Dawson |
||||
* |
||||
* This file is a part of Tusky. |
||||
* |
||||
* 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. |
||||
* |
||||
* Tusky is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even |
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
||||
* Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License along with Tusky; if not, |
||||
* see <http://www.gnu.org/licenses>. */
|
||||
|
||||
package com.keylesspalace.tusky.entity; |
||||
|
||||
import android.os.Parcel; |
||||
import android.os.Parcelable; |
||||
|
||||
public class Card implements Parcelable { |
||||
|
||||
public String url; |
||||
|
||||
public String title; |
||||
|
||||
public String description; |
||||
|
||||
public String image; |
||||
|
||||
public String type; |
||||
|
||||
public int width; |
||||
|
||||
public int height; |
||||
|
||||
@Override |
||||
public int hashCode() { |
||||
return url.hashCode(); |
||||
} |
||||
|
||||
@Override |
||||
public boolean equals(Object other) { |
||||
if (this.url == null) { |
||||
return this == other; |
||||
} else if (!(other instanceof Card)) { |
||||
return false; |
||||
} |
||||
Card account = (Card) other; |
||||
return account.url.equals(this.url); |
||||
} |
||||
|
||||
@Override |
||||
public int describeContents() { |
||||
return 0; |
||||
} |
||||
|
||||
@Override |
||||
public void writeToParcel(Parcel dest, int flags) { |
||||
dest.writeString(url); |
||||
dest.writeString(title); |
||||
dest.writeString(description); |
||||
dest.writeString(image); |
||||
dest.writeString(type); |
||||
dest.writeInt(width); |
||||
dest.writeInt(height); |
||||
} |
||||
|
||||
public Card() {} |
||||
|
||||
private Card(Parcel in) { |
||||
url = in.readString(); |
||||
title = in.readString(); |
||||
description = in.readString(); |
||||
image = in.readString(); |
||||
type = in.readString(); |
||||
width = in.readInt(); |
||||
height = in.readInt(); |
||||
} |
||||
|
||||
public static final Creator<Card> CREATOR = new Creator<Card>() { |
||||
@Override |
||||
public Card createFromParcel(Parcel source) { |
||||
return new Card(source); |
||||
} |
||||
|
||||
@Override |
||||
public Card[] newArray(int size) { |
||||
return new Card[size]; |
||||
} |
||||
}; |
||||
} |
@ -0,0 +1,11 @@ |
||||
package com.keylesspalace.tusky.entity |
||||
|
||||
import com.google.gson.annotations.SerializedName |
||||
|
||||
data class Profile( |
||||
@SerializedName("display_name") val displayName: String?, |
||||
val note: String?, |
||||
val avatar: String?, |
||||
val header: String? = null |
||||
) |
||||
|
@ -0,0 +1,27 @@ |
||||
/* Copyright 2017 Andrew Dawson |
||||
* |
||||
* This file is a part of Tusky. |
||||
* |
||||
* 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. |
||||
* |
||||
* Tusky is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even |
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
||||
* Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License along with Tusky; if not, |
||||
* see <http://www.gnu.org/licenses>. */ |
||||
|
||||
package com.keylesspalace.tusky.entity |
||||
|
||||
import com.google.gson.annotations.SerializedName |
||||
|
||||
data class Relationship ( |
||||
val id: String, |
||||
val following: Boolean, |
||||
@SerializedName("followed_by") val followedBy: Boolean, |
||||
val blocking: Boolean, |
||||
val muting: Boolean, |
||||
val requested: Boolean |
||||
) |
@ -1,189 +0,0 @@ |
||||
/* Copyright 2017 Andrew Dawson |
||||
* |
||||
* This file is a part of Tusky. |
||||
* |
||||
* 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. |
||||
* |
||||
* Tusky is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even |
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
||||
* Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License along with Tusky; if not, |
||||
* see <http://www.gnu.org/licenses>. */
|
||||
|
||||
package com.keylesspalace.tusky.entity; |
||||
|
||||
import android.text.Spanned; |
||||
|
||||
import com.google.gson.annotations.SerializedName; |
||||
|
||||
import java.util.Date; |
||||
import java.util.List; |
||||
|
||||
public class Status { |
||||
public String url; |
||||
|
||||
@SerializedName("reblogs_count") |
||||
public String reblogsCount; |
||||
|
||||
@SerializedName("favourites_count") |
||||
public String favouritesCount; |
||||
|
||||
@SerializedName("in_reply_to_id") |
||||
public String inReplyToId; |
||||
|
||||
@SerializedName("in_reply_to_account_id") |
||||
public String inReplyToAccountId; |
||||
|
||||
public String getActionableId() { |
||||
return reblog == null ? id : reblog.id; |
||||
} |
||||
|
||||
public Status getActionableStatus() { |
||||
return reblog == null ? this : reblog; |
||||
} |
||||
|
||||
public enum Visibility { |
||||
UNKNOWN(0), |
||||
@SerializedName("public") |
||||
PUBLIC(1), |
||||
@SerializedName("unlisted") |
||||
UNLISTED(2), |
||||
@SerializedName("private") |
||||
PRIVATE(3), |
||||
@SerializedName("direct") |
||||
DIRECT(4); |
||||
|
||||
private final int num; |
||||
|
||||
Visibility(int num) { |
||||
this.num = num; |
||||
} |
||||
|
||||
public int getNum() { |
||||
return num; |
||||
} |
||||
|
||||
public static Visibility byNum(int num) { |
||||
switch (num) { |
||||
case 4: return DIRECT; |
||||
case 3: return PRIVATE; |
||||
case 2: return UNLISTED; |
||||
case 1: return PUBLIC; |
||||
case 0: default: return UNKNOWN; |
||||
} |
||||
} |
||||
|
||||
public static Visibility byString(String s) { |
||||
switch (s) { |
||||
case "public": return PUBLIC; |
||||
case "unlisted": return UNLISTED; |
||||
case "private": return PRIVATE; |
||||
case "direct": return DIRECT; |
||||
case "unknown": default: return UNKNOWN; |
||||
} |
||||
} |
||||
|
||||
public String serverString() { |
||||
switch (this) { |
||||
case PUBLIC: return "public"; |
||||
case UNLISTED: return "unlisted"; |
||||
case PRIVATE: return "private"; |
||||
case DIRECT: return "direct"; |
||||
case UNKNOWN: default: return "unknown"; |
||||
} |
||||
} |
||||
} |
||||
|
||||
public String id; |
||||
|
||||
public Account account; |
||||
|
||||
public Spanned content; |
||||
|
||||
public Status reblog; |
||||
|
||||
@SerializedName("created_at") |
||||
public Date createdAt; |
||||
|
||||
public boolean reblogged; |
||||
|
||||
public boolean favourited; |
||||
|
||||
public boolean sensitive; |
||||
|
||||
public List<Emoji> emojis; |
||||
|
||||
@SerializedName("spoiler_text") |
||||
public String spoilerText; |
||||
|
||||
public Visibility visibility; |
||||
|
||||
public Visibility getVisibility() { |
||||
return visibility == null ? Visibility.UNLISTED : visibility; |
||||
} |
||||
|
||||
public boolean rebloggingAllowed() { |
||||
return visibility != null |
||||
&& visibility != Visibility.PRIVATE |
||||
&& visibility != Visibility.DIRECT |
||||
&& visibility != Visibility.UNKNOWN; |
||||
} |
||||
|
||||
@SerializedName("media_attachments") |
||||
public Attachment[] attachments; |
||||
|
||||
public Mention[] mentions; |
||||
|
||||
public Application application; |
||||
|
||||
public static final int MAX_MEDIA_ATTACHMENTS = 4; |
||||
|
||||
@Override |
||||
public boolean equals(Object o) { |
||||
if (this == o) return true; |
||||
if (o == null || getClass() != o.getClass()) return false; |
||||
|
||||
Status status = (Status) o; |
||||
return id != null ? id.equals(status.id) : status.id == null; |
||||
} |
||||
|
||||
@Override |
||||
public int hashCode() { |
||||
return id != null ? id.hashCode() : 0; |
||||
} |
||||
|
||||
|
||||
public static final class Mention { |
||||
public String id; |
||||
|
||||
public String url; |
||||
|
||||
@SerializedName("acct") |
||||
public String username; |
||||
|
||||
@SerializedName("username") |
||||
public String localUsername; |
||||
} |
||||
|
||||
public static class Application { |
||||
public String name; |
||||
public String website; |
||||
} |
||||
|
||||
@SuppressWarnings("unused") |
||||
public static class Emoji { |
||||
private String shortcode; |
||||
private String url; |
||||
|
||||
public String getShortcode() { |
||||
return shortcode; |
||||
} |
||||
|
||||
public String getUrl() { |
||||
return url; |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,142 @@ |
||||
/* Copyright 2017 Andrew Dawson |
||||
* |
||||
* This file is a part of Tusky. |
||||
* |
||||
* 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. |
||||
* |
||||
* Tusky is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even |
||||
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General |
||||
* Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License along with Tusky; if not, |
||||
* see <http://www.gnu.org/licenses>. */ |
||||
|
||||
package com.keylesspalace.tusky.entity |
||||
|
||||
import android.text.Spanned |
||||
import com.google.gson.annotations.SerializedName |
||||
import java.util.* |
||||
|
||||
data class Status( |
||||
var id: String, |
||||
var url: String, |
||||
val account: Account, |
||||
@SerializedName("in_reply_to_id") var inReplyToId: String?, |
||||
@SerializedName("in_reply_to_account_id") val inReplyToAccountId: String?, |
||||
val reblog: Status?, |
||||
val content: Spanned, |
||||
@SerializedName("created_at") val createdAt: Date, |
||||
val emojis: List<Emoji>, |
||||
@SerializedName("reblogs_count") val reblogsCount: Int, |
||||
@SerializedName("favourites_count") val favouritesCount: Int, |
||||
var reblogged: Boolean?, |
||||
var favourited: Boolean?, |
||||
var sensitive: Boolean, |
||||
@SerializedName("spoiler_text") val spoilerText: String, |
||||
val visibility: Visibility, |
||||
@SerializedName("media_attachments") var attachments: Array<Attachment>, |
||||
val mentions: Array<Mention>, |
||||
val application: Application? |
||||
) { |
||||
|
||||
val actionableId: String? |
||||
get() = reblog?.id ?: id |
||||
|
||||
val actionableStatus: Status |
||||
get() = reblog ?: this |
||||
|
||||
|
||||
enum class Visibility(val num: Int) { |
||||
UNKNOWN(0), |
||||
@SerializedName("public") |
||||
PUBLIC(1), |
||||
@SerializedName("unlisted") |
||||
UNLISTED(2), |
||||
@SerializedName("private") |
||||
PRIVATE(3), |
||||
@SerializedName("direct") |
||||
DIRECT(4); |
||||
|
||||
fun serverString(): String { |
||||
return when (this) { |
||||
PUBLIC -> "public" |
||||
UNLISTED -> "unlisted" |
||||
PRIVATE -> "private" |
||||
DIRECT -> "direct" |
||||
UNKNOWN -> "unknown" |
||||
} |
||||
} |
||||
|
||||
companion object { |
||||
|
||||
@JvmStatic |
||||
fun byNum(num: Int): Visibility { |
||||
return when (num) { |
||||
4 -> DIRECT |
||||
3 -> PRIVATE |
||||
2 -> UNLISTED |
||||
1 -> PUBLIC |
||||
0 -> UNKNOWN |
||||
else -> UNKNOWN |
||||
} |
||||
} |
||||
|
||||
@JvmStatic |
||||
fun byString(s: String): Visibility { |
||||
return when (s) { |
||||
"public" -> PUBLIC |
||||
"unlisted" -> UNLISTED |
||||
"private" -> PRIVATE |
||||
"direct" -> DIRECT |
||||
"unknown" -> UNKNOWN |
||||
else -> UNKNOWN |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
fun rebloggingAllowed(): Boolean { |
||||
return (visibility != Visibility.PRIVATE && visibility != Visibility.DIRECT && visibility != Visibility.UNKNOWN) |
||||
} |
||||
|
||||
override fun equals(other: Any?): Boolean { |
||||
if (this === other) return true |
||||
if (other == null || javaClass != other.javaClass) return false |
||||
|
||||
val status = other as Status? |
||||
return id == status?.id |
||||
} |
||||
|
||||
override fun hashCode(): Int { |
||||
return id.hashCode() |
||||
} |
||||
|
||||
|
||||
class Mention { |
||||
var id: String? = null |
||||
|
||||
var url: String? = null |
||||
|
||||
@SerializedName("acct") |
||||
var username: String? = null |
||||
|
||||
@SerializedName("username") |
||||
var localUsername: String? = null |
||||
} |
||||
|
||||
class Application { |
||||
var name: String? = null |
||||
var website: String? = null |
||||
} |
||||
|
||||
class Emoji { |
||||
val shortcode: String? = null |
||||
val url: String? = null |
||||
} |
||||
|
||||
companion object { |
||||
const val MAX_MEDIA_ATTACHMENTS = 4 |
||||
} |
||||
} |
Loading…
Reference in new issue