mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-22 21:19:31 +01:00
fix to not accidentally show unread messages popup
reason was that the UI was not yet loaded but isScrolledToBottom was already called, so findFirstVisibleItemPosition returned -1. Fix for now is to return true for isScrolledToBottom when position is -1 They does not solve the root cause for now. It should be made sure the code is not executed until UI is ready. A quick try with repeatOnLifecycle(Lifecycle.State.STARTED) when collecting getMessageFlow did not help. Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
parent
29362fab4b
commit
0356f5ac3c
@ -65,8 +65,10 @@ import androidx.core.text.bold
|
|||||||
import androidx.emoji2.text.EmojiCompat
|
import androidx.emoji2.text.EmojiCompat
|
||||||
import androidx.fragment.app.DialogFragment
|
import androidx.fragment.app.DialogFragment
|
||||||
import androidx.fragment.app.commit
|
import androidx.fragment.app.commit
|
||||||
|
import androidx.lifecycle.Lifecycle
|
||||||
import androidx.lifecycle.ViewModelProvider
|
import androidx.lifecycle.ViewModelProvider
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
|
import androidx.lifecycle.repeatOnLifecycle
|
||||||
import androidx.recyclerview.widget.ItemTouchHelper
|
import androidx.recyclerview.widget.ItemTouchHelper
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
@ -2926,17 +2928,10 @@ class ChatActivity :
|
|||||||
|
|
||||||
private fun isScrolledToBottom(): Boolean {
|
private fun isScrolledToBottom(): Boolean {
|
||||||
val position = layoutManager?.findFirstVisibleItemPosition()
|
val position = layoutManager?.findFirstVisibleItemPosition()
|
||||||
Log.d(TAG, "first visible item position is :" + position)
|
|
||||||
|
|
||||||
if (position == -1) {
|
if (position == -1) {
|
||||||
Log.d(TAG, "position is -1")
|
Log.w(TAG, "FirstVisibleItemPosition was -1 but true is returned for isScrolledToBottom(). This can " +
|
||||||
} else if (position != null) {
|
"happen when the UI is not yet ready")
|
||||||
val item = adapter?.items?.get(position)?.item
|
return true
|
||||||
if (item is ChatMessage) {
|
|
||||||
Log.d(TAG, "first visible item message is :" + item.message)
|
|
||||||
} else if (item is Date) {
|
|
||||||
Log.d(TAG, "first visible item time is :" + item.time)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return layoutManager?.findFirstVisibleItemPosition() == 0
|
return layoutManager?.findFirstVisibleItemPosition() == 0
|
||||||
|
Loading…
Reference in New Issue
Block a user