commit 57634d74676316ca61a769841e211e115290776e
parent 022ecc812e0e4f27f90408affee56d215446eaa7
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Sun, 28 May 2023 22:59:20 -0700
fix read marker when on top on page load
Diffstat:
3 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/pkg/web/handlers/api/v1/messages.qtpl b/pkg/web/handlers/api/v1/messages.qtpl
@@ -318,7 +318,7 @@
Data ChatMessagesData, baseTopBarURL string, readMarkerRendered, isFirstMsg *bool, CSRF, NullUsername string) -%}
{%- if e.UserCanSee(*AuthUser) -%}
{%- if AuthUser.ChatReadMarkerEnabled && e.CreatedAt.Before(Data.ReadMarker.ReadAt) && !*readMarkerRendered %}
- {%- if idx > 0 -%}<div class="read-marker read-marker-0"></div>{%- endif -%}
+ <div class="read-marker read-marker-0"{% if idx == 0 %} style="display:none;"{% endif %}></div>
{%- code *readMarkerRendered = true -%}
{%- endif -%}
<div id="msgid-{%s e.UUID %}" class="msgidc-{%s e.UUID %}-{%dl e.Rev %} msg
diff --git a/pkg/web/handlers/api/v1/messages.qtpl.go b/pkg/web/handlers/api/v1/messages.qtpl.go
@@ -702,13 +702,16 @@ func StreamRenderMessage(qw422016 *qt422016.Writer, idx int, e database.ChatMess
if AuthUser.ChatReadMarkerEnabled && e.CreatedAt.Before(Data.ReadMarker.ReadAt) && !*readMarkerRendered {
//line messages.qtpl:320
qw422016.N().S(`
-`)
+ <div class="read-marker read-marker-0"`)
//line messages.qtpl:321
- if idx > 0 {
+ if idx == 0 {
//line messages.qtpl:321
- qw422016.N().S(`<div class="read-marker read-marker-0"></div>`)
+ qw422016.N().S(` style="display:none;"`)
//line messages.qtpl:321
}
+//line messages.qtpl:321
+ qw422016.N().S(`></div>
+`)
//line messages.qtpl:322
*readMarkerRendered = true
diff --git a/pkg/web/handlers/handlers.go b/pkg/web/handlers/handlers.go
@@ -5107,6 +5107,11 @@ func ChatStreamMessagesHandler(c echo.Context) error {
readMarkerRev := 0
displayReadMarker := false
+ fstMsgTsRound := msgs[0].CreatedAt.Round(time.Second)
+ readMarkerTsRound := data.ReadMarker.ReadAt.Round(time.Second)
+ if fstMsgTsRound.Before(readMarkerTsRound) || fstMsgTsRound.Equal(readMarkerTsRound) {
+ displayReadMarker = true
+ }
var indicatorSelector bool
Loop:
for {