diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2021-11-25 23:15:30 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2021-11-25 23:15:30 +0900 |
commit | 5afa436feac0207e23a88616380f1982df180d2e (patch) | |
tree | 057bba112cd144c8f0ac197715f5aa807f5b2af0 | |
parent | e746a4dd06d74e4dec6170aa54e464773152a41c (diff) | |
download | snag-5afa436feac0207e23a88616380f1982df180d2e.tar.gz |
app: use list name instead of full name if possible
3 files changed, 22 insertions, 10 deletions
diff --git a/app/src/main/kotlin/jp/rhe/snag/entities/TwitterList.kt b/app/src/main/kotlin/jp/rhe/snag/entities/TwitterList.kt index 8582ec8..8bd2e93 100644 --- a/app/src/main/kotlin/jp/rhe/snag/entities/TwitterList.kt +++ b/app/src/main/kotlin/jp/rhe/snag/entities/TwitterList.kt @@ -5,14 +5,24 @@ import jp.rhe.snag.utils.jsonIgnoringUnknownKeys import kotlinx.serialization.Serializable import kotlinx.serialization.builtins.ListSerializer -class TwitterList private constructor(override val id: Long, val fullName: String) : IdObject { +class TwitterList private constructor( + override val id: Long, + val name: String, + val fullName: String, + val user: User +) : IdObject { companion object { fun fromTwitterJsonArray(jsonString: String): List<TwitterList> { val list = jsonIgnoringUnknownKeys.decodeFromString(ListSerializer(TwitterJson.serializer()), jsonString) - return list.map { TwitterList(it.id, it.full_name) } + return list.map { TwitterList(it.id, it.name, it.full_name, User.fromTwitterJson(it.user)) } } } @Serializable - private data class TwitterJson(val id: Long, val full_name: String) + private data class TwitterJson( + val id: Long, + val name: String, + val full_name: String, + val user: User.TwitterJson + ) } diff --git a/app/src/main/kotlin/jp/rhe/snag/views/pages/ListPageFragment.kt b/app/src/main/kotlin/jp/rhe/snag/views/pages/ListPageFragment.kt index 8851f84..6a8e2b0 100644 --- a/app/src/main/kotlin/jp/rhe/snag/views/pages/ListPageFragment.kt +++ b/app/src/main/kotlin/jp/rhe/snag/views/pages/ListPageFragment.kt @@ -35,12 +35,14 @@ class ListPageFragment : RefreshableTimelinePageFragment<Tweet, PageInfo.ListPag val lists = world.listSubscriptions.toList() val popup = PopupMenu(requireContext(), binding.twitterListMenuButton) lists.forEachIndexed { index, item -> - popup.menu.add(Menu.NONE, index, Menu.NONE, item.fullName) + val displayName = if (item.user == world.user) item.name else item.fullName + popup.menu.add(Menu.NONE, index, Menu.NONE, displayName) } popup.setOnMenuItemClickListener { val item = lists[it.itemId] - binding.twitterListName.text = item.fullName - pageInfo.currentListFullName = item.fullName + val displayName = if (item.user == world.user) item.name else item.fullName + binding.twitterListName.text = displayName + pageInfo.currentListDisplayName = displayName pageInfo.currentListId = item.id setSwipeRefreshEnabled(true) adapter.clear() @@ -50,7 +52,7 @@ class ListPageFragment : RefreshableTimelinePageFragment<Tweet, PageInfo.ListPag popup.show() } setSwipeRefreshEnabled(pageInfo.currentListId != null) - binding.twitterListName.text = pageInfo.currentListFullName ?: "<none selected>" + binding.twitterListName.text = pageInfo.currentListDisplayName ?: "<none selected>" refreshData() } diff --git a/app/src/main/kotlin/jp/rhe/snag/views/pages/Pages.kt b/app/src/main/kotlin/jp/rhe/snag/views/pages/Pages.kt index 6a9cf41..5e3c244 100644 --- a/app/src/main/kotlin/jp/rhe/snag/views/pages/Pages.kt +++ b/app/src/main/kotlin/jp/rhe/snag/views/pages/Pages.kt @@ -199,9 +199,9 @@ sealed class PageInfo(val fragmentClass: Class<out PageFragment<*>>) { } } - class ListPageInfo(var currentListId: Long?, var currentListFullName: String?) : PageInfo(ListPageFragment::class.java) { + class ListPageInfo(var currentListId: Long?, var currentListDisplayName: String?) : PageInfo(ListPageFragment::class.java) { override val name - get() = "List (${currentListFullName ?: "<not selected>"})" + get() = "List (${currentListDisplayName ?: "<not selected>"})" override fun describe(): String { return "" @@ -209,7 +209,7 @@ sealed class PageInfo(val fragmentClass: Class<out PageFragment<*>>) { override fun toJson() = buildJsonObject { put("list_id", currentListId) - put("list_full_name", currentListFullName) + put("list_full_name", currentListDisplayName) } companion object : PageInfoCompanionObject { |