summaryrefslogtreecommitdiffstats
path: root/server/user.go
diff options
context:
space:
mode:
authorbt <bt@rctt.net>2026-05-16 19:15:21 +0200
committerbt <bt@rctt.net>2026-05-16 22:46:48 +0200
commit82902e9dc3ad67c49e4f9381b83d38a659efa083 (patch)
treee53faaa5231eb6624fea4e4c448709d7a8765d37 /server/user.go
parentc04c73a4df223c8c2b2b42ed482fc0181948e6ea (diff)
downloadsolec-82902e9dc3ad67c49e4f9381b83d38a659efa083.tar.gz
solec-82902e9dc3ad67c49e4f9381b83d38a659efa083.zip
Add history reading
Diffstat (limited to 'server/user.go')
-rw-r--r--server/user.go23
1 files changed, 23 insertions, 0 deletions
diff --git a/server/user.go b/server/user.go
index 002ed89..6b0e946 100644
--- a/server/user.go
+++ b/server/user.go
@@ -118,6 +118,8 @@ func (s *Server) handleUserPayload(user *User, sender net.Conn, payload any) err
return s.handleMessage(sender, core.ConnTypeUser, v)
case core.Usermode:
return s.handleUsermode(user, sender, v)
+ case core.History:
+ return s.handleHistory(user, sender, v)
default:
return core.ErrUnexpectedPayloadType
}
@@ -151,3 +153,24 @@ func (s *Server) handleUsermode(user *User, conn net.Conn, mode core.Usermode) e
return nil
}
+
+func (s *Server) handleHistory(user *User, conn net.Conn, hist core.History) error {
+ // TODO: Add permissions check
+
+ messages, err := s.Storage.Read(hist.Channel, hist.Since, int(hist.Count), int(hist.Offset))
+ if err != nil {
+ return err
+ }
+
+ for _, m := range messages {
+ data, err := core.Encode(m)
+ if err != nil {
+ return err
+ }
+ if _, err := conn.Write(data); err != nil {
+ return err
+ }
+ }
+
+ return nil
+}