- サイドメニューの項目を整理

- notestockでusername,display_nameの片方が欠けていても動作するよう変更
- 某が/api/v1/instanceに200とエラーHTMLを返す問題の対策
This commit is contained in:
tateisu 2023-02-20 20:14:26 +09:00
parent 4ce12590b5
commit ff44caf652
4 changed files with 29 additions and 10 deletions

View File

@ -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

View File

@ -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")

View File

@ -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

View File

@ -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")