diff options
| author | bt <bt@rctt.net> | 2026-05-16 19:15:21 +0200 |
|---|---|---|
| committer | bt <bt@rctt.net> | 2026-05-16 22:46:48 +0200 |
| commit | 82902e9dc3ad67c49e4f9381b83d38a659efa083 (patch) | |
| tree | e53faaa5231eb6624fea4e4c448709d7a8765d37 /server | |
| parent | c04c73a4df223c8c2b2b42ed482fc0181948e6ea (diff) | |
| download | solec-82902e9dc3ad67c49e4f9381b83d38a659efa083.tar.gz solec-82902e9dc3ad67c49e4f9381b83d38a659efa083.zip | |
Add history reading
Diffstat (limited to 'server')
| -rw-r--r-- | server/user.go | 23 |
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 +} |
