SubwayTooter-Android-App/app/src/main/java/jp/juggler/subwaytooter/api/entity/TootCard.kt

69 lines
1.8 KiB
Kotlin

package jp.juggler.subwaytooter.api.entity
import jp.juggler.subwaytooter.api.TootParser
import jp.juggler.subwaytooter.pref
import jp.juggler.subwaytooter.util.DecodeOptions
import jp.juggler.util.JsonObject
import jp.juggler.util.filterNotEmpty
class TootCard(
// The url associated with the card
val url : String?,
// The title of the card
val title : String?,
// The card description
val description : String?,
// The image associated with the card, if any
val image : String?,
val type : String?,
val author_name : String? = null,
val author_url : String? = null,
val provider_name : String? = null,
val provider_url : String? = null,
val blurhash : String? = null,
val originalStatus : TootStatus? = null
) {
constructor(src : JsonObject) : this(
url = src.string("url"),
title = src.string("title"),
description = src.string("description"),
image = src.string("image"),
type = src.string("type"),
author_name = src.string("author_name"),
author_url = src.string("author_url"),
provider_name = src.string("provider_name"),
provider_url = src.string("provider_url"),
blurhash = src.string("blurhash")
)
constructor(parser : TootParser, src : TootStatus) : this(
originalStatus = src,
url = src.url,
title = "${src.account.display_name} @${parser.getFullAcct(src.account.acct).pretty}",
description = src.spoiler_text.filterNotEmpty()
?: if(parser.serviceType == ServiceType.MISSKEY) {
src.content
} else {
DecodeOptions(
context = parser.context,
decodeEmoji = true,
mentionDefaultHostDomain = src.account
).decodeHTML(src.content ?: "").toString()
},
image = src.media_attachments
?.firstOrNull()
?.urlForThumbnail(parser.context.pref())
?: src.account.avatar_static,
type = "photo"
)
}