@@ -2,6 +2,7 @@ package viewer
2
2
3
3
import (
4
4
"errors"
5
+ "fmt"
5
6
"io/fs"
6
7
"net/http"
7
8
"os"
@@ -54,6 +55,25 @@ func (v *Viewer) newFileHandler(fn func(w http.ResponseWriter, r *http.Request,
54
55
}
55
56
}
56
57
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
+
57
77
func (v * Viewer ) channelHandler (w http.ResponseWriter , r * http.Request , id string ) {
58
78
ctx := r .Context ()
59
79
lg := v .lg .With ("in" , "channelHandler" , "channel" , id )
@@ -67,22 +87,11 @@ func (v *Viewer) channelHandler(w http.ResponseWriter, r *http.Request, id strin
67
87
http .Error (w , err .Error (), http .StatusInternalServerError )
68
88
return
69
89
}
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
86
95
}
87
96
88
97
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
159
168
lg .ErrorContext (ctx , "AllMessages" , "error" , err , "template" , template )
160
169
http .Error (w , err .Error (), http .StatusInternalServerError )
161
170
}
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
+ }
162
176
page .Messages = msg
163
177
}
164
178
if err := v .tmpl .ExecuteTemplate (w , template , page ); err != nil {
0 commit comments