summaryrefslogtreecommitdiff
path: root/app.go
diff options
context:
space:
mode:
authordelthas <delthas@dille.cc>2022-02-10 15:44:05 +0100
committerdelthas <delthas@dille.cc>2022-02-11 12:18:45 +0100
commitb46a755bfc2afbce7276a2ce075d956ab7dc5b01 (patch)
treecad716b91edbcf5382ef131defc6728cbc25f8b3 /app.go
parentRename ColorGrey to ColorGray for consistency (diff)
Add support for the soju.im/read capability and READ command
See: https://github.com/emersion/soju/blob/c7f0634ec8ee94425547b159bc36705582151012/doc/read.md
Diffstat (limited to 'app.go')
-rw-r--r--app.go10
1 files changed, 10 insertions, 0 deletions
diff --git a/app.go b/app.go
index 5d1c6c3..9fd9b1a 100644
--- a/app.go
+++ b/app.go
@@ -221,6 +221,12 @@ func (app *App) eventLoop() {
}
if !app.pasting {
+ if netID, buffer, timestamp := app.win.UpdateRead(); buffer != "" {
+ s := app.sessions[netID]
+ if s != nil {
+ s.ReadSet(buffer, timestamp)
+ }
+ }
app.setStatus()
app.updatePrompt()
app.setBufferNumbers()
@@ -741,6 +747,7 @@ func (app *App) handleIRCEvent(netID string, ev interface{}) {
if _, added := app.win.AddBuffer(netID, "", buffer); added {
app.monitor[netID][buffer] = struct{}{}
s.MonitorAdd(buffer)
+ s.ReadGet(buffer)
s.NewHistoryRequest(buffer).
WithLimit(500).
Before(msg.TimeOrNow())
@@ -763,6 +770,7 @@ func (app *App) handleIRCEvent(netID string, ev interface{}) {
continue
}
s.MonitorAdd(target)
+ s.ReadGet(target)
app.win.AddBuffer(netID, "", target)
// CHATHISTORY BEFORE excludes its bound, so add 1ms
// (precision of the time tag) to include that last message.
@@ -809,6 +817,8 @@ func (app *App) handleIRCEvent(netID string, ev interface{}) {
if !bounds.IsZero() {
app.messageBounds[boundKey{netID, ev.Target}] = bounds
}
+ case irc.ReadEvent:
+ app.win.SetRead(netID, ev.Target, ev.Timestamp)
case irc.BouncerNetworkEvent:
_, added := app.win.AddBuffer(ev.ID, ev.Name, "")
if added {