Skip to content

Commit 47479fa

Browse files
authored
teams: smoother voices native list adapting (fixes #13007) (#12954)
1 parent 167d3ce commit 47479fa

6 files changed

Lines changed: 10 additions & 34 deletions

File tree

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ android {
1212
applicationId "org.ole.planet.myplanet"
1313
minSdk = 26
1414
targetSdk = 36
15-
versionCode = 5331
16-
versionName = "0.53.31"
15+
versionCode = 5332
16+
versionName = "0.53.32"
1717
ndkVersion = '26.3.11579264'
1818
vectorDrawables.useSupportLibrary = true
1919
}

app/src/main/java/org/ole/planet/myplanet/base/BaseVoicesFragment.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,13 @@ abstract class BaseVoicesFragment : BaseContainerFragment(), OnNewsItemClickList
6969
if (result.resultCode == Activity.RESULT_OK) {
7070
val newsId = result.data?.getStringExtra("newsId")
7171
newsId.let { adapterNews?.updateReplyBadge(it) }
72-
adapterNews?.refreshCurrentItems()
72+
adapterNews?.submitList(adapterNews?.currentList?.toList())
7373
}
7474
}
7575
}
7676

7777
override fun onDataChanged() {
78-
adapterNews?.refreshCurrentItems()
78+
adapterNews?.submitList(adapterNews?.currentList?.toList())
7979
}
8080

8181
override fun onReplyPosted(newsId: String?) {

app/src/main/java/org/ole/planet/myplanet/ui/teams/voices/TeamsVoicesFragment.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,15 +240,15 @@ class TeamsVoicesFragment : BaseTeamFragment() {
240240
adapterNews?.sharedPrefManager = sharedPrefManager
241241
adapterNews?.setListener(this)
242242
if (!isMemberFlow.value) adapterNews?.setNonTeamMember(true)
243-
realmNewsList?.let { adapterNews?.updateList(it) }
243+
realmNewsList?.let { adapterNews?.submitList(it) }
244244
binding.rvDiscussion.adapter = adapterNews
245245
adapterNews?.let {
246246
showNoData(binding.tvNodata, it.itemCount, "discussions")
247247
}
248248
} else {
249249
(existingAdapter as? VoicesAdapter)?.let { adapter ->
250250
realmNewsList?.let {
251-
adapter.updateList(it)
251+
adapter.submitList(it)
252252
showNoData(binding.tvNodata, adapter.itemCount, "discussions")
253253
}
254254
}

app/src/main/java/org/ole/planet/myplanet/ui/voices/ReplyActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ open class ReplyActivity : AppCompatActivity(), OnNewsItemClickListener {
165165
} else {
166166
newsAdapter.updateParentNews(news)
167167
}
168-
newsAdapter.updateList(list)
168+
newsAdapter.submitList(list)
169169
}
170170
}
171171

app/src/main/java/org/ole/planet/myplanet/ui/voices/VoicesAdapter.kt

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -137,17 +137,6 @@ class VoicesAdapter(
137137
this.imageList = imageList
138138
}
139139

140-
fun addItem(news: RealmNews?) {
141-
val currentList = currentList.toMutableList()
142-
currentList.add(0, news)
143-
submitListSafely(currentList) {
144-
recyclerView?.post {
145-
recyclerView?.scrollToPosition(0)
146-
recyclerView?.smoothScrollToPosition(0)
147-
}
148-
}
149-
}
150-
151140
fun setFromLogin(fromLogin: Boolean) {
152141
this.fromLogin = fromLogin
153142
}
@@ -327,7 +316,7 @@ class VoicesAdapter(
327316
newsToDelete?.id?.let { id ->
328317
deletePostFn(id) {
329318
val newList = snapshotList.toMutableList().apply { removeAt(adjustedPos) }
330-
submitListSafely(newList)
319+
submitList(newList)
331320
parentNews?.id?.let { pid ->
332321
val current = replyCountCache[pid]
333322
replyCountCache[pid] = if (current != null) maxOf(0, current - 1) else 0
@@ -426,10 +415,6 @@ class VoicesAdapter(
426415
return null
427416
}
428417

429-
fun updateList(newList: List<RealmNews?>) {
430-
submitListSafely(newList)
431-
}
432-
433418
fun updateParentNews(news: RealmNews?) {
434419
val contentChanged = parentNews?.message != news?.message ||
435420
parentNews?.isEdited != news?.isEdited
@@ -438,10 +423,6 @@ class VoicesAdapter(
438423
if (contentChanged) notifyItemChanged(0)
439424
}
440425

441-
fun refreshCurrentItems() {
442-
submitListSafely(currentList.toList())
443-
}
444-
445426
private fun parseViewIn(viewIn: String?): JsonArray? {
446427
if (TextUtils.isEmpty(viewIn)) return null
447428
return try {
@@ -514,11 +495,6 @@ class VoicesAdapter(
514495
list?.forEach { preParseNews(it) }
515496
super.submitList(list, commitCallback)
516497
}
517-
518-
private fun submitListSafely(list: List<RealmNews?>, commitCallback: Runnable? = null) {
519-
submitList(list, commitCallback)
520-
}
521-
522498
private fun setMemberClickListeners(holder: VoicesViewHolder, userModel: RealmUser?, currentLeader: RealmUser?) {
523499
if (!fromLogin) {
524500
holder.binding.imgUser.setOnClickListener {

app/src/main/java/org/ole/planet/myplanet/ui/voices/VoicesFragment.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,10 +267,10 @@ class VoicesFragment : BaseVoicesFragment() {
267267
adapterNews?.setFromLogin(requireArguments().getBoolean("fromLogin"))
268268
adapterNews?.setListener(this)
269269
adapterNews?.registerAdapterDataObserver(observer)
270-
adapterNews?.updateList(sortedList)
270+
adapterNews?.submitList(sortedList)
271271
binding.rvNews.adapter = adapterNews
272272
} else {
273-
(binding.rvNews.adapter as? VoicesAdapter)?.updateList(list)
273+
(binding.rvNews.adapter as? VoicesAdapter)?.submitList(list)
274274
}
275275
adapterNews?.let { showNoData(binding.tvMessage, it.itemCount, currentEmptyStateSource) }
276276
}

0 commit comments

Comments
 (0)