Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Neil Alexander
element-android
Commits
0e0cfaba
Unverified
Commit
0e0cfaba
authored
May 10, 2021
by
Benoît Marty
Committed by
GitHub
May 10, 2021
Browse files
Merge pull request #3308 from vector-im/feature/fga/fix_timeline_read_marker
Fix read marker visibility/position when filtering some events
parents
7ec44a55
525cd3ed
Changes
2
Hide whitespace changes
Inline
Side-by-side
CHANGES.md
View file @
0e0cfaba
...
...
@@ -24,6 +24,7 @@ Bugfix 🐛:
-
Fix read marker not updating automatically (#3267)
-
Sent video does not contains duration (#3272)
-
Properly clean the back stack if the user cancel registration when waiting for email validation
-
Fix read marker visibility/position when filtering some events
-
Fix user invitation in case of restricted profile api (#3306)
Translations 🗣:
...
...
vector/src/main/java/im/vector/app/features/home/room/detail/timeline/helper/TimelineControllerInterceptorHelper.kt
View file @
0e0cfaba
...
...
@@ -62,6 +62,7 @@ class TimelineControllerInterceptorHelper(private val positionOfReadMarker: KMut
val
firstUnreadEventId
=
(
unreadState
as
?
UnreadState
.
HasUnread
)
?.
firstUnreadEventId
var
atLeastOneVisibleItemSinceLastDaySeparator
=
false
var
atLeastOneVisibleItemsBeforeReadMarker
=
false
var
appendReadMarker
=
false
// Then iterate on models so we have the exact positions in the adapter
modelsIterator
.
forEach
{
epoxyModel
->
...
...
@@ -72,11 +73,7 @@ class TimelineControllerInterceptorHelper(private val positionOfReadMarker: KMut
}
epoxyModel
.
getEventIds
().
forEach
{
eventId
->
adapterPositionMapping
[
eventId
]
=
index
if
(
epoxyModel
.
canAppendReadMarker
()
&&
eventId
==
firstUnreadEventId
&&
atLeastOneVisibleItemsBeforeReadMarker
)
{
modelsIterator
.
addReadMarkerItem
(
callback
)
index
++
positionOfReadMarker
.
set
(
index
)
}
appendReadMarker
=
epoxyModel
.
canAppendReadMarker
()
&&
eventId
==
firstUnreadEventId
&&
atLeastOneVisibleItemsBeforeReadMarker
}
}
if
(
epoxyModel
is
DaySeparatorItem
)
{
...
...
@@ -91,6 +88,12 @@ class TimelineControllerInterceptorHelper(private val positionOfReadMarker: KMut
atLeastOneVisibleItemSinceLastDaySeparator
=
true
}
}
if
(
appendReadMarker
)
{
modelsIterator
.
addReadMarkerItem
(
callback
)
index
++
positionOfReadMarker
.
set
(
index
)
appendReadMarker
=
false
}
index
++
}
previousModelsSize
=
models
.
size
...
...
@@ -103,8 +106,6 @@ class TimelineControllerInterceptorHelper(private val positionOfReadMarker: KMut
it
.
setOnVisibilityStateChanged
(
ReadMarkerVisibilityStateChangedListener
(
callback
))
}
add
(
readMarker
)
// Use next as we still have some process to do before the next iterator loop
next
()
}
private
fun
MutableListIterator
<
EpoxyModel
<
*
>>.
removeCallItemIfNeeded
(
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment