diff --git a/app/src/main/java/jp/juggler/subwaytooter/api/entity/APTag.kt b/app/src/main/java/jp/juggler/subwaytooter/api/entity/APTag.kt index 0a8a6b97..50c211f3 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/api/entity/APTag.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/api/entity/APTag.kt @@ -48,17 +48,17 @@ class APTag(parser: TootParser, jsonArray: JsonArray?) { "Hashtag" -> hashtags.add(TootTag.parse(parser, it)) "Mention" -> - Acct.parse(it.string("name")!!) - .let { acct -> - mentions.add( - TootMention( - id = EntityId.DEFAULT, - url = it.string("href")!!, - acct = acct, // may local - username = acct.username - ) + it.string("name")?.trimStart('@')?.let { rawAcct -> + val acct = Acct.parse(rawAcct) + mentions.add( + TootMention( + id = EntityId.DEFAULT, + url = it.string("href")!!, + acct = acct, // may local + username = acct.username ) - } + ) + } } } catch (ex: Throwable) { log.e(ex, "APTag ctor failed.") diff --git a/app/src/main/java/jp/juggler/subwaytooter/dialog/EmojiPicker.kt b/app/src/main/java/jp/juggler/subwaytooter/dialog/EmojiPicker.kt index 51143483..947b921b 100644 --- a/app/src/main/java/jp/juggler/subwaytooter/dialog/EmojiPicker.kt +++ b/app/src/main/java/jp/juggler/subwaytooter/dialog/EmojiPicker.kt @@ -619,7 +619,7 @@ private class EmojiPicker( this.canCollapse = keywordLower.isNullOrEmpty() && (selectedCategory == null || selectedCategory == EmojiCategory.Custom) - val list = buildList { + adapter.list = buildList { val filteredCategories = pickerCategries.filter { selectedCategory == null || it.category == selectedCategory }.mapNotNull { category -> @@ -648,13 +648,14 @@ private class EmojiPicker( } } } - adapter.list = list - if (scrollToCategory) { - val idx = - list.indexOfFirst { (it as? PickerItemCategory)?.original == lastExpandCategory } - if (idx != -1) { - views.rvGrid.smoothScrollToPosition(idx) - } + + val targetCategory = lastExpandCategory + if (scrollToCategory && targetCategory != null) { + views.root.handler?.postDelayed({ + adapter.list.indexOfFirst { (it as? PickerItemCategory)?.original == targetCategory } + .takeIf { it != -1 } + ?.let { views.rvGrid.smoothScrollToPosition(it) } + }, 100L) } for (it in views.llCategories.children) {