only mark as read when fully at bottom
This commit is contained in:
parent
a0036bdda3
commit
9e024fb6f2
1 changed files with 3 additions and 4 deletions
|
|
@ -109,14 +109,13 @@ final class ChatScroll({
|
||||||
useEffect(
|
useEffect(
|
||||||
() {
|
() {
|
||||||
const loadThreshold = 500.0;
|
const loadThreshold = 500.0;
|
||||||
const readThreshold = 50.0;
|
|
||||||
|
|
||||||
Future<void> checkPosition() async {
|
Future<void> checkPosition() async {
|
||||||
if (!scrollController.hasClients) return;
|
if (!scrollController.hasClients) return;
|
||||||
|
|
||||||
final position = scrollController.position;
|
final position = scrollController.position;
|
||||||
|
|
||||||
final isAtBottom = position.extentBefore <= readThreshold;
|
final isAtBottom = position.extentBefore <= 0;
|
||||||
if (isAtBottom != atBottom.value) atBottom.value = isAtBottom;
|
if (isAtBottom != atBottom.value) atBottom.value = isAtBottom;
|
||||||
|
|
||||||
if (position.extentAfter <= loadThreshold) {
|
if (position.extentAfter <= loadThreshold) {
|
||||||
|
|
@ -124,12 +123,12 @@ final class ChatScroll({
|
||||||
} else if (contextualEvent.value != null &&
|
} else if (contextualEvent.value != null &&
|
||||||
position.extentBefore <= loadThreshold) {
|
position.extentBefore <= loadThreshold) {
|
||||||
await paginate(.forward);
|
await paginate(.forward);
|
||||||
} else if (position.extentBefore <= readThreshold) {
|
} else if (position.extentBefore <= 0) {
|
||||||
await markRead();
|
await markRead();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (controllerData.isLoading == false &&
|
if (controllerData.isLoading == false &&
|
||||||
position.extentBefore <= readThreshold &&
|
position.extentBefore <= 0 &&
|
||||||
controllerData.value?.hasMoreForward == false &&
|
controllerData.value?.hasMoreForward == false &&
|
||||||
contextualEvent.value != null) {
|
contextualEvent.value != null) {
|
||||||
anchorId.value = null;
|
anchorId.value = null;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue