diff --git a/app/src/main/java/jp/juggler/subwaytooter/actmain/SideMenuAdapter.kt b/app/src/main/java/jp/juggler/subwaytooter/actmain/SideMenuAdapter.kt index 3ca33a0f..756a8475 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/actmain/SideMenuAdapter.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/actmain/SideMenuAdapter.kt @@ -602,20 +602,29 @@ class SideMenuAdapter( else -> null } - fun filterListItems() { + fun filterListItems(notify:Boolean=true) { + log.i("filterListItems notify=$notify") list = originalList.filter { when (it.itemType) { ItemType.IT_NOTIFICATION_PERMISSION -> notificationActionRecommend() != null + + ItemType.IT_NORMAL -> when (it.title) { + R.string.antenna_list_misskey, + R.string.misskey_hybrid_timeline_long, + -> PrefB.bpEnableDeprecatedSomething.value + + else -> true + } else -> true } } - notifyDataSetChanged() + if(notify) notifyDataSetChanged() } init { actMain.applicationContext.checkVersion() - filterListItems() + filterListItems(notify = false) ListView(actMain).apply { adapter = this@SideMenuAdapter diff --git a/app/src/main/java/jp/juggler/subwaytooter/api/entity/TootAccount.kt b/app/src/main/java/jp/juggler/subwaytooter/api/entity/TootAccount.kt index 25025469..4df8c584 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/api/entity/TootAccount.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/api/entity/TootAccount.kt @@ -477,9 +477,13 @@ open class TootAccount( // notestock はActivityPub 準拠のサービスなので、サーバ内IDというのは特にない val id: EntityId = EntityId.DEFAULT + val tmpDisplayName = src.string("display_name") + val tmpUserName = src.string("username") + // notestockはdisplay_nameとusernameが入れ替わってる? - val username: String = src.stringOrThrow("display_name") - val display_name: String = src.stringOrThrow("username") + val username = tmpDisplayName ?: tmpUserName ?: error("missing username,displayname") + val display_name = + tmpUserName ?: tmpDisplayName ?: error("missing username,displayname") val tmpAcct = src.string("subject")?.let { Acct.parse(it) } val url: String? = src.string("url") 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 742fcb48..9d1f599c 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 @@ -367,7 +367,7 @@ class TootInstance(parser: TootParser, src: JsonObject) { val result = TootApiResult.makeWithCaption(apiHost) if (result.error != null) return result - if(!PrefB.bpEnableDeprecatedSomething.value){ + if (!PrefB.bpEnableDeprecatedSomething.value) { return result.setError(context.getString(R.string.misskey_support_end)) } @@ -418,13 +418,17 @@ class TootInstance(parser: TootParser, src: JsonObject) { // 両方読めなかった場合 return when (r1.response?.code) { - // Mastodon側が404を返したらMisskeyのエラー応答を返す + // /api/v1/instance が404を返したらMisskeyのエラー応答を返す 404 -> r2 - // Mastodonはホワイトリストモードの際に401を返す。 + // /api/v1/instance 401を返すのはMastodonのホワイトリストモードだと思う // Mastoronのエラー結果を返す。 401 -> r1 + // /api/v1/instance が200を返すがJsonObjectではないのは、 + // Misskeyサーバへの /api/meta にアクセスしない && Misskey は /api/v1/instance に200を返すから。 + 200 -> r2 + // その他の場合 // Mastoronのエラー結果を返す。 else -> r1 diff --git a/app/src/main/java/jp/juggler/subwaytooter/api/entity/TootStatus.kt b/app/src/main/java/jp/juggler/subwaytooter/api/entity/TootStatus.kt index 01326247..6eabd7f1 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/api/entity/TootStatus.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/api/entity/TootStatus.kt @@ -794,8 +794,10 @@ class TootStatus( val apTag = APTag(parser, src.jsonArray("tag")) val who = parser.account(src.jsonObject("account")) - ?: error("missing account") - val accountRef = TootAccountRef.tootAccountRef(parser, who) + if (who == null) { + error("missing account") + } + val accountRef = tootAccountRef(parser, who) val account = accountRef.get() val uri = src.string("id") ?: error("missing uri")