From ced96e983b5caccf18b1e6d2db9a837134fd9b50 Mon Sep 17 00:00:00 2001 From: tateisu Date: Sun, 30 Apr 2023 18:41:31 +0900 Subject: [PATCH] improve #239, replace short_description, read thumbnail.url --- .../subwaytooter/api/entity/TootInstance.kt | 36 +++++++++++++++---- .../ViewHolderHeaderInstance.kt | 12 +++---- .../subwaytooter/dialog/DlgCreateAccount.kt | 4 +-- .../juggler/subwaytooter/dialog/LoginForm.kt | 4 +-- .../main/res/layout/lv_header_instance.xml | 8 ++--- app/src/main/res/values-ar/strings.xml | 1 - app/src/main/res/values-ca/strings.xml | 1 - app/src/main/res/values-de/strings.xml | 1 - app/src/main/res/values-fr/strings.xml | 1 - app/src/main/res/values-ja/strings.xml | 2 +- app/src/main/res/values-zh-rCN/strings.xml | 1 - app/src/main/res/values/strings.xml | 2 +- 12 files changed, 45 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/jp/juggler/subwaytooter/api/entity/TootInstance.kt b/app/src/main/java/jp/juggler/subwaytooter/api/entity/TootInstance.kt index 10017a3d..3398e47a 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/api/entity/TootInstance.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/api/entity/TootInstance.kt @@ -150,11 +150,11 @@ class TootInstance(parser: TootParser, src: JsonObject) { // A description for the instance // (HTML) // (Mastodon: 3.0.0より後のWebUIでは全く使われなくなる見込み。 https://github.com/tootsuite/mastodon/pull/12119) - val description: String? + val descriptionOld: String? // (Mastodon 3.0.0以降) // (HTML) - val short_description: String? + val description: String? // An email address which can be used to contact the instance administrator // misskeyの場合はURLらしい @@ -223,7 +223,7 @@ class TootInstance(parser: TootParser, src: JsonObject) { this.contact_account = null this.description = src.string("description") - this.short_description = null + this.descriptionOld = null this.approval_required = false this.feature_quote = true @@ -246,7 +246,15 @@ class TootInstance(parser: TootParser, src: JsonObject) { this.version = src.string("version") this.decoded_version = VersionString(version) this.stats = parseItem(src.jsonObject("stats")) { Stats(it) } - this.thumbnail = src.string("thumbnail") + this.thumbnail = + // mastodon /api/v2/instance + src.jsonObject("thumbnail") + ?.jsonObject("versions")?.string("@2x") + // mastodon /api/v2/instance + ?: src.jsonObject("thumbnail") + ?.string("url") + // mastodon /api/v1/instance + ?: src.string("thumbnail") this.max_toot_chars = src.int("max_toot_chars") @@ -277,8 +285,19 @@ class TootInstance(parser: TootParser, src: JsonObject) { ) } - this.description = src.string("description") - this.short_description = src.string("short_description") + when (val shortDesc = src.string("short_description")) { + // /api/v2/instance + null -> { + this.descriptionOld = null + this.description = src.string("description") + } + // /api/v1/instance + else -> { + this.descriptionOld = src.string("description") + this.description = shortDesc + } + } + this.approval_required = // mastodon /api/v2/instance src.jsonObject("registrations")?.boolean("approval_required") @@ -289,7 +308,10 @@ class TootInstance(parser: TootParser, src: JsonObject) { this.feature_quote = src.boolean("feature_quote") ?: false - this.invites_enabled = src.boolean("invites_enabled") + this.invites_enabled = + // removed on /api/v2/instance + // mastodon /api/v1/instance 3.1.4 + src.boolean("invites_enabled") this.fedibirdCapabilities = src.jsonArray("fedibird_capabilities")?.stringList()?.toSet() diff --git a/app/src/main/java/jp/juggler/subwaytooter/columnviewholder/ViewHolderHeaderInstance.kt b/app/src/main/java/jp/juggler/subwaytooter/columnviewholder/ViewHolderHeaderInstance.kt index aae4e83a..da5e2c9f 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/columnviewholder/ViewHolderHeaderInstance.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/columnviewholder/ViewHolderHeaderInstance.kt @@ -61,7 +61,7 @@ internal class ViewHolderHeaderInstance( } views.tvDescription.movementMethod = MyLinkMovementMethod - views.tvShortDescription.movementMethod = MyLinkMovementMethod + views.tvDescriptionLong.movementMethod = MyLinkMovementMethod } override fun showColor() { @@ -81,7 +81,7 @@ internal class ViewHolderHeaderInstance( btnEmail.text = "?" btnEmail.isEnabledAlpha = false tvDescription.text = "?" - tvShortDescription.text = "?" + tvDescriptionLong.text = "?" ivThumbnail.setImageUrl(0f, null) tvLanguages.text = "?" tvInvitesEnabled.text = "?" @@ -133,14 +133,14 @@ internal class ViewHolderHeaderInstance( emojiSizeMode = accessInfo.emojiSizeMode(), ) - tvShortDescription.text = options - .decodeHTML("

${instance.short_description ?: ""}

") - .neatSpaces() - tvDescription.text = options .decodeHTML("

${instance.description ?: ""}

") .neatSpaces() + tvDescriptionLong.text = options + .decodeHTML("

${instance.descriptionOld ?: ""}

") + .neatSpaces() + val stats = instance.stats if (stats == null) { tvUserCount.setText(R.string.not_provided_mastodon_under_1_6) diff --git a/app/src/main/java/jp/juggler/subwaytooter/dialog/DlgCreateAccount.kt b/app/src/main/java/jp/juggler/subwaytooter/dialog/DlgCreateAccount.kt index 333d365b..bf09d5a1 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/dialog/DlgCreateAccount.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/dialog/DlgCreateAccount.kt @@ -71,8 +71,8 @@ class DlgCreateAccount( misskeyVersion = instanceInfo?.misskeyVersionMajor ?: 0 ), ).decodeHTML( - instanceInfo?.short_description?.notBlank() - ?: instanceInfo?.description?.notBlank() + instanceInfo?.description?.notBlank() + ?: instanceInfo?.descriptionOld?.notBlank() ?: TootInstance.DESCRIPTION_DEFAULT ).neatSpaces() diff --git a/app/src/main/java/jp/juggler/subwaytooter/dialog/LoginForm.kt b/app/src/main/java/jp/juggler/subwaytooter/dialog/LoginForm.kt index d4477625..0998244f 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/dialog/LoginForm.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/dialog/LoginForm.kt @@ -271,8 +271,8 @@ class LoginForm( else -> { textColor = attrColor(R.attr.colorTextContent) - text = (tootInstance.short_description.notBlank() - ?: tootInstance.description.notBlank() + text = (tootInstance.description.notBlank() + ?: tootInstance.descriptionOld.notBlank() ?: "(empty server description)" ).let { DecodeOptions( diff --git a/app/src/main/res/layout/lv_header_instance.xml b/app/src/main/res/layout/lv_header_instance.xml index f427ebf7..9725d7b3 100644 --- a/app/src/main/res/layout/lv_header_instance.xml +++ b/app/src/main/res/layout/lv_header_instance.xml @@ -160,20 +160,20 @@ + android:text="@string/description" /> + android:text="@string/description_long" /> diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index be6f328d..beeacafc 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -490,7 +490,6 @@ عدد النطاقات المتصلة لا تُظهر إشعار \"انتهاء مهلة الخادم\" افتراضي - وصف قصير (مثال) username@server شفافية صورة الخلفية إخفاء المتابِعين diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index c34b5bcd..4df47117 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -466,7 +466,6 @@ Títol Correu-e Descripció - Descripció curta Versió Informació al servidor de \"%1$s\" Informació del servidor diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index e4b6506d..9f8961e3 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -950,7 +950,6 @@ Serverinformation Serverinformation von \"%1$s\" Version - Kurzbeschreibung Beschreibung E-Mail Titel diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index af4926e0..cc9e46ff 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -939,7 +939,6 @@ Autour de ce message Votre message Bloquer tout le domaine - Courte description Taille limite de la pièce jointe (PixelFed) (Unité : Mo. Par défaut 15) Redimensionner en %1$d pixels carrés (équivalent %2$dx%2$d) Couleur de la barre d’état (redémarrage de l\'app requis. pre-Android 6 ne peut pas ajuster l’icône et la couleur du texte) diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index eac88521..811c9fd9 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -194,7 +194,7 @@ この通知を削除 %1$sに削除されました 説明 - 短い説明 + 長い説明 (old Mastodon) 説明文が指定されてません 開発者 ダイレクトメッセージ diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 2f074e99..fe0df1f2 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -1015,7 +1015,6 @@ 实例信息 “%1$s”的实例信息 版本 - 简要描述 描述 电子邮件 读取更多标签 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 063b8af1..5e92f2cc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -465,7 +465,7 @@ Title E-mail Description - Short description + Description (old Mastodon) Version Server information of \"%1$s\" Server information