Skip to content

Commit 6e6287d

Browse files
authored
Merge pull request #426 from rusq/view-rev
fix reversal of messages on thread link and thread link
2 parents b9b5b7b + 5825eff commit 6e6287d

File tree

2 files changed

+31
-17
lines changed

2 files changed

+31
-17
lines changed

internal/viewer/handlers.go

+30-16
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package viewer
22

33
import (
44
"errors"
5+
"fmt"
56
"io/fs"
67
"net/http"
78
"os"
@@ -54,6 +55,25 @@ func (v *Viewer) newFileHandler(fn func(w http.ResponseWriter, r *http.Request,
5455
}
5556
}
5657

58+
func maybeReverse(mm []slack.Message) error {
59+
if len(mm) == 0 {
60+
return nil
61+
}
62+
63+
first, err := fasttime.TS2int(mm[0].Timestamp)
64+
if err != nil {
65+
return fmt.Errorf("TS2int at 0: %w", err)
66+
}
67+
last, err := fasttime.TS2int(mm[len(mm)-1].Timestamp)
68+
if err != nil {
69+
return fmt.Errorf("TS2int at -1: %w", err)
70+
}
71+
if first > last {
72+
slices.Reverse(mm)
73+
}
74+
return nil
75+
}
76+
5777
func (v *Viewer) channelHandler(w http.ResponseWriter, r *http.Request, id string) {
5878
ctx := r.Context()
5979
lg := v.lg.With("in", "channelHandler", "channel", id)
@@ -67,22 +87,11 @@ func (v *Viewer) channelHandler(w http.ResponseWriter, r *http.Request, id strin
6787
http.Error(w, err.Error(), http.StatusInternalServerError)
6888
return
6989
}
70-
if len(mm) > 0 {
71-
first, err := fasttime.TS2int(mm[0].Timestamp)
72-
if err != nil {
73-
lg.ErrorContext(ctx, "TS2int", "idx", 0, "error", err)
74-
http.Error(w, err.Error(), http.StatusInternalServerError)
75-
return
76-
}
77-
last, err := fasttime.TS2int(mm[len(mm)-1].Timestamp)
78-
if err != nil {
79-
lg.ErrorContext(ctx, "TS2int", "idx", -1, "error", err)
80-
http.Error(w, err.Error(), http.StatusInternalServerError)
81-
return
82-
}
83-
if first > last {
84-
slices.Reverse(mm)
85-
}
90+
91+
if err := maybeReverse(mm); err != nil {
92+
lg.ErrorContext(ctx, "maybeReverse", "error", err)
93+
http.Error(w, err.Error(), http.StatusInternalServerError)
94+
return
8695
}
8796

8897
lg.DebugContext(ctx, "conversation", "id", id, "message_count", len(mm))
@@ -159,6 +168,11 @@ func (v *Viewer) threadHandler(w http.ResponseWriter, r *http.Request, id string
159168
lg.ErrorContext(ctx, "AllMessages", "error", err, "template", template)
160169
http.Error(w, err.Error(), http.StatusInternalServerError)
161170
}
171+
if err := maybeReverse(msg); err != nil {
172+
lg.ErrorContext(ctx, "maybeReverse", "error", err)
173+
http.Error(w, err.Error(), http.StatusInternalServerError)
174+
return
175+
}
162176
page.Messages = msg
163177
}
164178
if err := v.tmpl.ExecuteTemplate(w, template, page); err != nil {

internal/viewer/templates/index.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ <h2>{{ rendername .Conversation }}</h2>
116116
{{define "hx_thread"}}
117117
<h2>Thread: {{ .ThreadID }}</h2>
118118
<p><a id="close-thread" href="#">[X]</a></p>
119-
<p><a id="thread-link" href="{{.Conversation.ID}}/{{ .ThreadID }}">Link to this thread</a></p>
119+
<p><a id="thread-link" href="/archives/{{.Conversation.ID}}/{{ .ThreadID }}#{{.ThreadID}}">Link to this thread</a></p>
120120
{{ range $i, $el := .ThreadMessages }}
121121
<article class="message">
122122
{{ template "render_message" $el }}

0 commit comments

Comments
 (0)